module TreasureData autoload :API, 'td/client/api' autoload :Client, 'td/client' autoload :Database, 'td/client' autoload :Table, 'td/client' autoload :Schema, 'td/client' autoload :Job, 'td/client' module Command private def initialize @render_indent = '' end def get_client(opts={}) apikey = Config.apikey unless apikey raise ConfigError, "Account is not configured." end Client.new(apikey, opts) end def get_ssl_client(opts={}) opts[:ssl] = true get_client(opts) end def cmd_render_table(rows, *opts) require 'hirb' Hirb::Helpers::Table.render(rows, *opts) end #def cmd_render_tree(nodes, *opts) # require 'hirb' # Hirb::Helpers::Tree.render(nodes, *opts) #end def cmd_debug_error(ex) if $verbose $stderr.puts "error: #{$!.class}: #{$!.to_s}" $!.backtrace.each {|b| $stderr.puts " #{b}" } $stderr.puts "" end end def cmd_format_elapsed(start, finish) if start if !finish finish = Time.now.utc end e = finish.to_i - start.to_i elapsed = '' if e >= 3600 elapsed << "#{e/3600}h " e %= 3600 elapsed << "%2dm " % (e/60) e %= 60 elapsed << "%2dsec" % e elsif e >= 60 elapsed << "%2dm " % (e/60) e %= 60 elapsed << "%2dsec" % e else elapsed << "%2dsec" % e end else elapsed = '' end elapsed = "% 13s" % elapsed # right aligned end def get_database(client, db_name) begin return client.database(db_name) rescue cmd_debug_error $! $stderr.puts $! $stderr.puts "Use '#{$prog} database:list' to show the list of databases." exit 1 end db end def get_table(client, db_name, table_name) db = get_database(client, db_name) begin table = db.table(table_name) rescue $stderr.puts $! $stderr.puts "Use '#{$prog} table:list #{db_name}' to show the list of tables." exit 1 end #if type && table.type != type # $stderr.puts "Table '#{db_name}.#{table_name} is not a #{type} table but a #{table.type} table" #end table end def ask_password(max=3, &block) 3.times do begin system "stty -echo" # TODO termios print "Password (typing will be hidden): " password = STDIN.gets || "" password = password[0..-2] # strip \n rescue Interrupt $stderr.print "\ncanceled." exit 1 ensure system "stty echo" # TODO termios print "\n" end if password.empty? $stderr.puts "canceled." exit 0 end yield password end end end end