lib/search_kit/cli.rb in search-kit-0.0.2 vs lib/search_kit/cli.rb in search-kit-0.0.3

- old
+ new

@@ -1,33 +1,68 @@ +require 'ansi' +require 'highline' require 'thor' +require 'search_kit/thor' module SearchKit class CLI < Thor - include Messaging + autoload :Documents, 'search_kit/cli/documents' + autoload :Events, 'search_kit/cli/events' + autoload :Indices, 'search_kit/cli/indices' + autoload :Search, 'search_kit/cli/search' + autoload :Subscribers, 'search_kit/cli/subscribers' + no_commands do + def cli + @cli ||= HighLine.new + end + + def messages + @messages ||= Messages.new + end + end + desc "documents", "Manage individual SearchKit documents" - subcommand "documents", SearchKit::Documents::CLI + subcommand "documents", SearchKit::CLI::Documents desc "events", "Publish and subscribe to SearchKit events" - subcommand "events", SearchKit::Events::CLI + subcommand "events", SearchKit::CLI::Events desc "indices", "Manage your SearchKit indices" - subcommand "indices", SearchKit::Indices::CLI + subcommand "indices", SearchKit::CLI::Indices desc "search", "Quickly search your indices" - subcommand "search", SearchKit::Search::CLI + subcommand "search", SearchKit::CLI::Search + desc "subscribers", "Register and control a subscriber account" + subcommand "subscribers", SearchKit::CLI::Subscribers + desc "config SETTING [VALUE]", "Configure or view your SearchKit settings" def config(setting, value = nil) if value SearchKit.set_config(setting, value) - info "Set #{setting}: #{value}" + messages.info "Set #{setting}: #{value}" else value = SearchKit.show_config(setting) - info "SearchKit settings for #{setting}:" - info " - ~/.search-kit/config.yml: #{value}" - info " - ENV: #{ENV.fetch(setting.upcase, "Not set")}" - info " - Runtime: #{SearchKit.config.send(setting)}" + messages.info "SearchKit settings for #{setting}:" + messages.info " - ~/.search-kit/config.yml: #{value}" + messages.info " - ENV: #{ENV.fetch(setting.upcase, "Not set")}" + messages.info " - Runtime: #{SearchKit.config.send(setting)}" end end + + desc "setup", "Set up your search-kit environment" + def setup + email = cli.ask("Email: ".ansi(:cyan)) + password = cli.ask("Password: ".ansi(:cyan)) do |query| + query.echo = '*' + end + + client = SearchKit::Clients::Subscribers.new + subscriber = client.create(email: email, password: password) + + config("app_token", subscriber.creator_tokens.first) + messages.info("Alright! Your search-kit install has been set up.") + end + end end