lib/travis/cli/api_command.rb in travis-1.5.6.travis.329.4 vs lib/travis/cli/api_command.rb in travis-1.5.6.travis.330.4

- old
+ new

@@ -2,14 +2,16 @@ 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::PRO_URI}'") { |c,_| c.api_endpoint = Travis::Client::PRO_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 } @@ -21,10 +23,14 @@ duration = Time.now - start c.debug(" took %.2g seconds" % duration) end 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') do |c, adapter| adapter.gsub! '-', '_' require "faraday/adapter/#{adapter}" require 'typhoeus/adapters/faraday' if adapter == 'typhoeus' c.session.faraday_adapter = adapter.to_sym @@ -39,13 +45,17 @@ config['endpoints'] ||= {} config['endpoints'][api_endpoint] ||= {} end def setup + setup_enterprise if enterprise? 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? end def pro? api_endpoint == Travis::Client::PRO_URI @@ -77,9 +87,26 @@ end end end private + + def 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] + "https://#{domain}/api/" + end + self.api_endpoint = c[enterprise_name] + self.insecure = true if insecure.nil? + end + + def enterprise? + !!enterprise_name + end def load_gh return if defined? GH require 'gh'