Sha256: 778b467b036404364b97ca0031c6bb2c13713d74feb52102bd18554647bc64d4
Contents?: true
Size: 1.63 KB
Versions: 2
Compression:
Stored size: 1.63 KB
Contents
require "thor" require "launchy" require "clickhouse" module Clickhouse class CLI < Thor DEPENDENCIES = {:server => "sinatra"} DEFAULT_URLS = "http://localhost:8123" desc "server [HOSTS]", "Start a Sinatra server as ClickHouse client (HOSTS should be comma separated URIs)" method_options [:port, "-p"] => 1982, [:username, "-u"] => :string, [:password, "-P"] => :string def server(urls = DEFAULT_URLS) run! :server, urls, options do Launchy.open "http://localhost:#{options[:port]}" end end desc "console [HOSTS]", "Start a Pry console as ClickHouse client (HOSTS should be comma separated URIs)" method_options [:username, "-u"] => :string, [:password, "-P"] => :string def console(urls = DEFAULT_URLS) run! :console, urls, options end map "s" => :server map "c" => :console private def run!(const, urls, options, &block) require! DEPENDENCIES[const] require_relative "cli/client" require_relative "cli/#{const}" connect! urls, options self.class.const_get(const.to_s.capitalize).run!(:port => options["port"], &block) end def require!(name) require(name) if name rescue LoadError puts "fatal: #{name.capitalize} not available. Please run `gem install #{name}` first." exit! end def connect!(urls, options) config = options.merge(:urls => urls.split(",")).inject({}){|h, (k, v)| h[k.to_sym] = v; h} Clickhouse.establish_connection config end def method_missing(method, *_args) raise Error, "Unrecognized command \"#{method}\". Please consult `clickhouse help`." end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
clickhouse-0.1.9 | lib/clickhouse/cli.rb |
clickhouse-0.1.8 | lib/clickhouse/cli.rb |