#!/usr/bin/env ruby # encoding: utf-8 # # This file is part of the clavem gem. Copyright (C) 2013 and above Shogun . # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php. # require "bovem" require "clavem" Bovem::Application.create do localizer = Bovem::I18n.new(root: "clavem", path: ::Pathname.new(::File.dirname(__FILE__)).to_s + "/../locales/") name "Clavem" description localizer.application_description version Clavem::Version::STRING option(:url, [], {type: String, help: localizer.application_help_url, meta: "URL", required: true}) option(:host, [:i, "host"], {type: String, help: localizer.application_help_host, meta: "HOST", default: "localhost"}) option(:port, [], {type: Integer, help: localizer.application_help_port, meta: localizer.application_meta_port, default: 7772}) option(:command, [], {type: String, help: localizer.application_help_command, meta: localizer.application_meta_command, default: "open \"{{URL}}\""}) option(:skip_callback, [:C, "skip-callback"], {help: localizer.application_help_no_callback}) option(:timeout, [:n, "timeout"], {type: Integer, help: localizer.application_help_timeout, meta: "TIMEOUT"}) option(:quiet, [], {help: localizer.application_help_quiet}) action do |command| opts = command.get_options quiet = opts["quiet"] skip_callback = opts["skip_callback"] authorizer = Clavem::Authorizer.instance(host: opts["host"], port: opts["port"], command: opts["command"], timeout: opts["timeout"]) command.console.info(localizer.cli_obtaining(opts["url"])) unless quiet command.console.task(!quiet ? localizer.cli_running(authorizer.callback_url) : nil) do begin authorizer.authorize(opts["url"], !skip_callback) ? :ok : :fail rescue Clavem::Exceptions::Failure => e command.console.error(e.message) end end if authorizer.succeeded? command.console.info(localizer.cli_succeeded(authorizer.token)) unless quiet else command.console.error(localizer.cli_failed) end end end