lib/travis/cli/api_command.rb in travis-1.11.1 vs lib/travis/cli/api_command.rb in travis-1.12.0

- old
+ new

@@ -1,54 +1,55 @@ +# frozen_string_literal: true + require 'travis/cli' require 'travis/tools/github' module Travis module CLI class ApiCommand < Command include Travis::Client::Methods attr_accessor :enterprise_name attr_reader :session + abstract on('-e', '--api-endpoint URL', 'Travis API server to talk to') on('-I', '--[no-]insecure', 'do not verify SSL certificate of API endpoint') - on('--pro', "short-cut for --api-endpoint '#{Travis::Client::COM_URI}'") { |c,_| c.api_endpoint = Travis::Client::COM_URI } - on('--com', "short-cut for --api-endpoint '#{Travis::Client::COM_URI}'") { |c,_| c.api_endpoint = Travis::Client::COM_URI } - on('--org', "short-cut for --api-endpoint '#{Travis::Client::ORG_URI}'") { |c,_| c.api_endpoint = Travis::Client::ORG_URI } - on('--staging', 'talks to staging system') { |c,_| c.api_endpoint = c.api_endpoint.gsub(/api/, 'api-staging') } + on('--pro', "short-cut for --api-endpoint '#{Travis::Client::COM_URI}'") { |c, _| c.api_endpoint = Travis::Client::COM_URI } + on('--com', "short-cut for --api-endpoint '#{Travis::Client::COM_URI}'") { |c, _| c.api_endpoint = Travis::Client::COM_URI } + on('--org', "short-cut for --api-endpoint '#{Travis::Client::ORG_URI}'") { |c, _| c.api_endpoint = Travis::Client::ORG_URI } + on('--staging', 'talks to staging system') { |c, _| c.api_endpoint = c.api_endpoint.gsub(/api/, 'api-staging') } on('-t', '--token [ACCESS_TOKEN]', 'access token to use') { |c, t| c.access_token = t } - on('--debug', 'show API requests') do |c,_| + on('--debug', 'show API requests') do |c, _| c.debug = true c.session.instrument do |info, request| c.time(info, request) end end - on('--debug-http', 'show HTTP(S) exchange') do |c,_| + on('--debug-http', 'show HTTP(S) exchange') do |c, _| c.session.debug_http = true end on('-X', '--enterprise [NAME]', 'use enterprise setup (optionally takes name for multiple setups)') do |c, name| c.enterprise_name = name || 'default' end on('--adapter ADAPTER', 'Faraday adapter to use for HTTP requests. If omitted, use Typhoeus if it is installed, ' \ 'and Net::HTTP otherwise. See https://lostisland.github.io/faraday/adapters/ for more info') do |c, adapter| - begin - adapter.gsub! '-', '_' - require "faraday/adapter/#{adapter}" - require 'typhoeus/adapters/faraday' if adapter == 'typhoeus' - c.session.faraday_adapter = adapter.to_sym - rescue LoadError => e - warn "\`--adapter #{adapter}\` is given, but it is not installed. Run \`gem install #{adapter}\` and try again" - exit 1 - end + adapter.gsub! '-', '_' + require "faraday/adapter/#{adapter}" + require 'typhoeus/adapters/faraday' if adapter == 'typhoeus' + c.session.faraday_adapter = adapter.to_sym + rescue LoadError + warn "\`--adapter #{adapter}\` is given, but it is not installed. Run \`gem install #{adapter}\` and try again" + exit 1 end def initialize(*) - @session = Travis::Client.new(:agent_info => "command #{command_name}") + @session = Travis::Client.new(agent_info: "command #{command_name}") super end def endpoint_config config['endpoints'] ||= {} @@ -60,12 +61,12 @@ self.api_endpoint = default_endpoint if default_endpoint and not explicit_api_endpoint? self.access_token ||= fetch_token endpoint_config['access_token'] ||= access_token endpoint_config['insecure'] = insecure unless insecure.nil? self.insecure = endpoint_config['insecure'] - session.ssl = { :verify => false } if insecure? - authenticate if pro? or enterprise? + session.ssl = { verify: false } if insecure? + authenticate if pro? || enterprise? end def enterprise? !!endpoint_config['enterprise'] end @@ -88,99 +89,102 @@ def sync(block = true, dot = '.') user.sync steps = count = 1 - while block and user.reload.syncing? + while block && user.reload.syncing? count += 1 sleep(1) - if count % steps == 0 - steps = count/10 + 1 + if (count % steps).zero? + steps = count / 10 + 1 output.print dot end end end private - def setup_enterprise - return unless setup_enterprise? - c = config['enterprise'] ||= {} - c[enterprise_name] = api_endpoint if explicit_api_endpoint? - c[enterprise_name] ||= write_to($stderr) do - error "enterprise setup not configured" unless interactive? - user_input = ask(color("Enterprise domain: ", :bold)).to_s - domain = user_input[%r{^(?:https?://)?(.*?)/?(?:/api/?)?$}, 1] - endpoint = "https://#{domain}/api" - config['default_endpoint'] = endpoint if agree("Use #{color domain, :bold} as default endpoint? ") { |q| q.default = 'yes' } - endpoint - end - self.api_endpoint = c[enterprise_name] - self.insecure = insecure unless insecure.nil? - self.session.ssl.delete :ca_file - endpoint_config['enterprise'] = true - @setup_ennterpise = true - end + def setup_enterprise + return unless setup_enterprise? - def setup_enterprise? - @setup_ennterpise ||= false - !!enterprise_name and not @setup_ennterpise + c = config['enterprise'] ||= {} + c[enterprise_name] = api_endpoint if explicit_api_endpoint? + c[enterprise_name] ||= write_to($stderr) do + error 'enterprise setup not configured' unless interactive? + user_input = ask(color('Enterprise domain: ', :bold)).to_s + domain = user_input[%r{^(?:https?://)?(.*?)/?(?:/api/?)?$}, 1] + endpoint = "https://#{domain}/api" + config['default_endpoint'] = endpoint if agree("Use #{color domain, :bold} as default endpoint? ") { |q| q.default = 'yes' } + endpoint end + self.api_endpoint = c[enterprise_name] + self.insecure = insecure unless insecure.nil? + session.ssl.delete :ca_file + endpoint_config['enterprise'] = true + @setup_ennterpise = true + end - def load_gh + def setup_enterprise? + @setup_ennterpise ||= false + !!enterprise_name and not @setup_ennterpise + end - gh_config = session.config['github'] - gh_config &&= gh_config.inject({}) { |h,(k,v)| h.update(k.to_sym => v) } - gh_config ||= {} - gh_config[:ssl] = Travis::Client::Session::SSL_OPTIONS - gh_config[:ssl] = { :verify => false } if gh_config[:api_url] and gh_config[:api_url] != "https://api.github.com" - gh_config.delete :scopes + def load_gh + gh_config = session.config['github'] + gh_config &&= gh_config.inject({}) { |h, (k, v)| h.update(k.to_sym => v) } + gh_config ||= {} + gh_config[:ssl] = Travis::Client::Session::SSL_OPTIONS + gh_config[:ssl] = { verify: false } if gh_config[:api_url] && gh_config[:api_url] != 'https://api.github.com' + gh_config.delete :scopes + if debug? gh_config[:instrumenter] = proc do |type, payload, &block| next block.call unless type == 'http.gh' - time("GitHub API: #{payload[:verb].to_s.upcase} #{payload[:url]}", block) - end if debug? - GH.set(gh_config) + time("GitHub API: #{payload[:verb].to_s.upcase} #{payload[:url]}", block) + end end - def github_endpoint - load_gh - GH.with({}).api_host - end + GH.set(gh_config) + end - def listen(*args) - super(*args) do |listener| - on_signal { listener.disconnect } - yield listener - end - end + def github_endpoint + load_gh + GH.with({}).api_host + end - def default_endpoint - ENV['TRAVIS_ENDPOINT'] || config['default_endpoint'] + def listen(*args) + super(*args) do |listener| + on_signal { listener.disconnect } + yield listener end + end - def detected_endpoint - default_endpoint || Travis::Client::ORG_URI - end + def default_endpoint + ENV['TRAVIS_ENDPOINT'] || config['default_endpoint'] + end - def endpoint_option - return "" if org? and detected_endpoint? - return " --org" if org? - return " --pro" if pro? + def detected_endpoint + default_endpoint || Travis::Client::COM_URI + end - if config['enterprise'] - key, _ = config['enterprise'].detect { |k,v| v.start_with? api_endpoint } - return " -X" if key == "default" - return " -X #{key}" if key - end + def endpoint_option + return "" if pro? and detected_endpoint? + return " --org" if org? + return " --pro" if pro? - " -e %p" % api_endpoint + if config['enterprise'] + key, _ = config['enterprise'].detect { |k,v| v.start_with? api_endpoint } + return " -X" if key == "default" + return " -X #{key}" if key end - def fetch_token - ENV['TRAVIS_TOKEN'] || endpoint_config['access_token'] - end + " -e %p" % api_endpoint + end + + def fetch_token + ENV['TRAVIS_TOKEN'] || endpoint_config['access_token'] + end end end end