class Tapsoob::CLI::Root
Public Instance Methods
pull(dump_path, database_url)
click to toggle source
# File lib/tapsoob/cli/root.rb, line 22 def pull(dump_path, database_url) opts = parse_opts(options) Tapsoob.log.level = Logger::DEBUG if opts[:debug] if opts[:resume_filename] clientresumexfer(:pull, dump_path, database_url, opts) else clientxfer(:pull, dump_path, database_url, opts) end end
push(dump_path, database_url)
click to toggle source
# File lib/tapsoob/cli/root.rb, line 45 def push(dump_path, database_url) opts = parse_opts(options) Tapsoob.log.level = Logger::DEBUG if opts[:debug] if opts[:resume_filename] clientresumexfer(:push, dump_path, database_url, opts) else clientxfer(:push, dump_path, database_url, opts) end end
version()
click to toggle source
# File lib/tapsoob/cli/root.rb, line 56 def version puts Tapsoob::VERSION.dup end
Private Instance Methods
clientresumexfer(method, dump_path, database_url, opts)
click to toggle source
# File lib/tapsoob/cli/root.rb, line 120 def clientresumexfer(method, dump_path, database_url, opts) session = JSON.parse(File.read(opts.delete(:resume_filename))) session.symbolize_recursively! dump_path = dump_path || session.delete(:dump_path) require 'taps/operation' newsession = session.merge({ :default_chunksize => opts[:default_chunksize], :disable_compression => opts[:disable_compression], :resume => true }) Tapsoob::Operation.factory(method, database_url, dump_path, newsession).run end
clientxfer(method, dump_path, database_url, opts)
click to toggle source
# File lib/tapsoob/cli/root.rb, line 110 def clientxfer(method, dump_path, database_url, opts) Tapsoob::Config.verify_database_url(database_url) FileUtils.mkpath "#{dump_path}/schemas" FileUtils.mkpath "#{dump_path}/data" FileUtils.mkpath "#{dump_path}/indexes" Tapsoob::Operation.factory(method, database_url, dump_path, opts).run end
parse_opts(options)
click to toggle source
# File lib/tapsoob/cli/root.rb, line 67 def parse_opts(options) # Default options opts = { skip_schema: options[:"skip-schema"], indexes_first: options[:"indexes_first"], disable_compression: options[:"disable-compression"], debug: options[:debug] } # Push only options opts[:purge] = options[:purge] if options.key?(:purge) opts[:"skip-duplicates"] = options[:"skip-duplicates"] if options.key?(:"skip-duplicates") opts[:"discard-identity"] = options[:"discard-identity"] if options.key?(:"discard-identity") # Resume if options[:resume] if File.exists?(options[:resume]) opts[:resume_file] = options[:resume] else raise "Unable to find resume file." end end # Default chunksize if options[:chunksize] opts[:default_chunksize] = (options[:chunksize] < 10 ? 10 : options[:chunksize]) end # Regex filter opts[:table_filter] = options[:filter] if options[:filter] # Table filter if options[:tables] r_tables = options[:tables].collect { |t| "^#{t}" }.join("|") opts[:table_filter] = "#{r_tables}" end # Exclude tables opts[:exclude_tables] = options[:"exclude-tables"] if options[:"exclude-tables"] opts end