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'