Module: PuppetfileResolver::Util

Defined in:
lib/puppetfile-resolver/util.rb

Class Method Summary collapse

Class Method Details

.git?Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
# File 'lib/puppetfile-resolver/util.rb', line 59

def self.git?
  Open3.capture3('git', '--version')
  true
rescue Errno::ENOENT
  false
end

.net_http_get(uri, proxy = nil) ⇒ Net::HTTPResponse

Execute a HTTP/S GET query and return the response

Parameters:

  • uri (String, URI)

    The URI to request

  • proxy (nil, String, URI) (defaults to: nil)

    The URI of the proxy server to use. Defaults to nil (No proxy server)

Returns:

  • (Net::HTTPResponse)

    the response of the request



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/puppetfile-resolver/util.rb', line 29

def self.net_http_get(uri, proxy = nil)
  uri = URI.parse(uri) unless uri.is_a?(URI)

  http_options = { :use_ssl => uri.instance_of?(URI::HTTPS) }
  # Because on Windows Ruby doesn't use the Windows certificate store which has up-to date
  # CA certs, we can't depend on someone setting the environment variable correctly. So use our
  # static CA PEM file if SSL_CERT_FILE is not set.
  http_options[:ca_file] = PuppetfileResolver::Util.static_ca_cert_file if ENV['SSL_CERT_FILE'].nil?

  start_args = [uri.host, uri.port]

  unless proxy.nil?
    proxy = URI.parse(proxy) unless proxy.is_a?(URI)
    start_args.concat([proxy.host, proxy.port, proxy.user, proxy.password])
  end

  Net::HTTP.start(*start_args, http_options) { |http| return http.request(Net::HTTP::Get.new(uri)) }
  nil
end

.run_command(cmd) ⇒ Object

Examples:

run_command([‘git’, ‘–version’])

Parameters:

  • cmd (Array)

    an array of command and args



53
54
55
# File 'lib/puppetfile-resolver/util.rb', line 53

def self.run_command(cmd)
  Open3.capture3(*cmd)
end

.static_ca_cert_fileObject



21
22
23
# File 'lib/puppetfile-resolver/util.rb', line 21

def self.static_ca_cert_file
  @static_ca_cert_file ||= File.expand_path(File.join(__dir__, 'data', 'ruby_ca_certs.pem'))
end

.symbolise_object(object) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/puppetfile-resolver/util.rb', line 7

def self.symbolise_object(object)
  case # rubocop:disable Style/EmptyCaseCondition Ignore
  when object.is_a?(Hash)
    object.inject({}) do |memo, (k, v)| # rubocop:disable Style/EachWithObject Ignore
      memo[k.to_sym] = symbolise_object(v)
      memo
    end
  when object.is_a?(Array)
    object.map { |i| symbolise_object(i) }
  else
    object
  end
end