class Librarian::Environment

Attributes

runtime_cache[R]
ui[RW]

Public Class Methods

new(options = { }) click to toggle source
# File lib/librarian/environment.rb, line 30
def initialize(options = { })
  @pwd = options.fetch(:pwd) { Dir.pwd }
  @env = options.fetch(:env) { ENV.to_hash }
  @home = options.fetch(:home) { default_home }
  @project_path = options[:project_path]
  @runtime_cache = RuntimeCache.new
end

Public Instance Methods

adapter_module() click to toggle source
# File lib/librarian/environment.rb, line 77
def adapter_module
  implementation? or return
  self.class.name.split("::")[0 ... -1].inject(Object, &:const_get)
end
adapter_name() click to toggle source
# File lib/librarian/environment.rb, line 82
def adapter_name
  implementation? or return
  Helpers.camel_cased_to_dasherized(self.class.name.split("::")[-2])
end
adapter_version() click to toggle source
# File lib/librarian/environment.rb, line 87
def adapter_version
  implementation? or return
  adapter_module::VERSION
end
cache_path() click to toggle source
# File lib/librarian/environment.rb, line 127
def cache_path
  tmp_path.join("librarian/cache")
end
config_db() click to toggle source
# File lib/librarian/environment.rb, line 42
def config_db
  @config_db ||= begin
    Config::Database.new(adapter_name,
      :pwd => @pwd,
      :env => @env,
      :home => @home,
      :project_path => @project_path,
      :specfile_name => default_specfile_name
    )
  end
end
config_keys() click to toggle source
# File lib/librarian/environment.rb, line 159
def config_keys
  %Q[
  ]
end
default_specfile_name() click to toggle source
# File lib/librarian/environment.rb, line 54
def default_specfile_name
  @default_specfile_name ||= begin
    capped = adapter_name.capitalize
    "#{capped}file"
  end
end
dsl(*args, &block) click to toggle source
# File lib/librarian/environment.rb, line 147
def dsl(*args, &block)
  dsl_class.run(self, *args, &block)
end
dsl_class() click to toggle source
# File lib/librarian/environment.rb, line 151
def dsl_class
  adapter_module::Dsl
end
ephemeral_lockfile() click to toggle source
# File lib/librarian/environment.rb, line 104
def ephemeral_lockfile
  Lockfile.new(self, nil)
end
http_proxy_uri() click to toggle source

The HTTP proxy specified in the environment variables:

  • HTTP_PROXY

  • HTTP_PROXY_USER

  • HTTP_PROXY_PASS

Adapted from:

https://github.com/rubygems/rubygems/blob/v1.8.24/lib/rubygems/remote_fetcher.rb#L276-293
# File lib/librarian/environment.rb, line 170
def http_proxy_uri
  @http_proxy_uri ||= begin
    keys = %w( HTTP_PROXY HTTP_PROXY_USER HTTP_PROXY_PASS )
    env = Hash[ENV.
      map{|k, v| [k.upcase, v]}.
      select{|k, v| keys.include?(k)}.
      reject{|k, v| v.nil? || v.empty?}]

    uri = env["HTTP_PROXY"] or return
    uri = "http://#{uri}" unless uri =~ /^(https?|ftp|file):/
    uri = URI.parse(uri)
    uri.user ||= env["HTTP_PROXY_USER"]
    uri.password ||= env["HTTP_PROXY_PASS"]
    uri
  end
end
inspect() click to toggle source
# File lib/librarian/environment.rb, line 191
def inspect
  "#<#{self.class}:0x#{__id__.to_s(16)}>"
end
lock() click to toggle source
# File lib/librarian/environment.rb, line 143
def lock
  lockfile.read
end
lockfile() click to toggle source
# File lib/librarian/environment.rb, line 100
def lockfile
  Lockfile.new(self, lockfile_path)
end
lockfile_name() click to toggle source
# File lib/librarian/environment.rb, line 92
def lockfile_name
  config_db.lockfile_name
end
lockfile_path() click to toggle source
# File lib/librarian/environment.rb, line 96
def lockfile_path
  config_db.lockfile_path
end
logger() click to toggle source
# File lib/librarian/environment.rb, line 38
def logger
  @logger ||= Logger.new(self)
end
net_http_class(host) click to toggle source
# File lib/librarian/environment.rb, line 187
def net_http_class(host)
  no_proxy?(host) ? Net::HTTP : net_http_default_class
end
project_path() click to toggle source
# File lib/librarian/environment.rb, line 61
def project_path
  config_db.project_path
end
project_relative_path_to(path) click to toggle source
# File lib/librarian/environment.rb, line 135
def project_relative_path_to(path)
  Pathname.new(path).relative_path_from(project_path)
end
resolver(options = { }) click to toggle source
# File lib/librarian/environment.rb, line 108
def resolver(options = { })
  Resolver.new(self, resolver_options.merge(options))
end
resolver_options() click to toggle source
# File lib/librarian/environment.rb, line 112
def resolver_options
  {
    :cyclic => resolver_permit_cyclic_reslutions?,
  }
end
resolver_permit_cyclic_reslutions?() click to toggle source
# File lib/librarian/environment.rb, line 118
def resolver_permit_cyclic_reslutions?
  false
end
scratch_path() click to toggle source
# File lib/librarian/environment.rb, line 131
def scratch_path
  tmp_path.join("librarian/scratch")
end
spec() click to toggle source
# File lib/librarian/environment.rb, line 139
def spec
  specfile.read
end
specfile() click to toggle source
# File lib/librarian/environment.rb, line 73
def specfile
  Specfile.new(self, specfile_path)
end
specfile_name() click to toggle source
# File lib/librarian/environment.rb, line 65
def specfile_name
  config_db.specfile_name
end
specfile_path() click to toggle source
# File lib/librarian/environment.rb, line 69
def specfile_path
  config_db.specfile_path
end
tmp_path() click to toggle source
# File lib/librarian/environment.rb, line 122
def tmp_path
  part = config_db["tmp"] || "tmp"
  project_path.join(part)
end
version() click to toggle source
# File lib/librarian/environment.rb, line 155
def version
  VERSION
end

Private Instance Methods

default_home() click to toggle source
# File lib/librarian/environment.rb, line 205
def default_home
  File.expand_path(ENV["HOME"] || Etc.getpwnam(Etc.getlogin).dir)
end
environment() click to toggle source
# File lib/librarian/environment.rb, line 197
def environment
  self
end
implementation?() click to toggle source
# File lib/librarian/environment.rb, line 201
def implementation?
  self.class != ::Librarian::Environment
end
net_http_default_class() click to toggle source
# File lib/librarian/environment.rb, line 222
def net_http_default_class
  @net_http_default_class ||= begin
    p = http_proxy_uri
    p ? Net::HTTP::Proxy(p.host, p.port, p.user, p.password) : Net::HTTP
  end
end
no_proxy?(host) click to toggle source
# File lib/librarian/environment.rb, line 216
def no_proxy?(host)
  no_proxy_list.any? do |host_addr|
    host.end_with?(host_addr)
  end
end
no_proxy_list() click to toggle source
# File lib/librarian/environment.rb, line 209
def no_proxy_list
  @no_proxy_list ||= begin
    list = ENV['NO_PROXY'] || ENV['no_proxy'] || ""
    list.split(/\s*,\s*/) + %w(localhost 127.0.0.1)
  end
end