Sha256: 6c158314b22d28d222a294832c4e0e188f76f791d83b58e03f05bdefb6c34062

Contents?: true

Size: 1.51 KB

Versions: 5

Compression:

Stored size: 1.51 KB

Contents

require 'thor'
require File.dirname(__FILE__) + '/config'

Taps::Config.taps_database_url = 'sqlite://taps.db'

module Taps
class Cli < Thor
	desc "server <local_database_url> <login> <password>", "Start a taps database import/export server"
	method_options(:port => :numeric)
	def server(database_url, login, password)
		Taps::Config.database_url = database_url
		Taps::Config.login = login
		Taps::Config.password = password

		port = options[:port] || 5000

		Taps::Config.verify_database_url

		require File.dirname(__FILE__) + '/server'
		Taps::Server.run!({
			:port => port,
			:environment => :production,
			:logging => true
		})
	end

	desc "pull <local_database_url> <remote_url>", "Pull a database from a taps server"
	method_options(:chunksize => :numeric)
	def pull(database_url, remote_url)
		clientxfer(:cmd_receive, database_url, remote_url)
	end

	desc "push <local_database_url> <remote_url>", "Push a database to a taps server"
	method_options(:chunksize => :numeric)
	def push(database_url, remote_url)
		clientxfer(:cmd_send, database_url, remote_url)
	end

	def clientxfer(method, database_url, remote_url)
		if options[:chunksize]
			Taps::Config.chunksize = options[:chunksize] < 100 ? 100 : options[:chunksize]
		else
			Taps::Config.chunksize = 1000
		end
		Taps::Config.database_url = database_url
		Taps::Config.remote_url = remote_url

		Taps::Config.verify_database_url

		require File.dirname(__FILE__) + '/client_session'

		Taps::ClientSession.quickstart do |session|
			session.send(method)
		end
	end
end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
ricardochimal-taps-0.2.0 lib/taps/cli.rb
ricardochimal-taps-0.2.1 lib/taps/cli.rb
ricardochimal-taps-0.2.2 lib/taps/cli.rb
taps-0.2.1 lib/taps/cli.rb
taps-0.2.2 lib/taps/cli.rb