Class: Librarian::Puppet::Source::Forge
- Inherits:
-
Object
- Object
- Librarian::Puppet::Source::Forge
show all
- Includes:
- Util
- Defined in:
- lib/librarian/puppet/source/forge.rb,
lib/librarian/puppet/source/forge/repo.rb,
lib/librarian/puppet/source/forge/repo_v1.rb,
lib/librarian/puppet/source/forge/repo_v3.rb
Defined Under Namespace
Classes: Repo, RepoV1, RepoV3
Constant Summary
collapse
- LOCK_NAME =
'FORGE'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Util
#clean_uri, #cp_r, #debug, #info, #module_name, #normalize_name, #rsync?, #warn
Constructor Details
#initialize(environment, uri, options = {}) ⇒ Forge
Returns a new instance of Forge.
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/librarian/puppet/source/forge.rb', line 61
def initialize(environment, uri, options = {})
self.environment = environment
if uri =~ %r{^http(s)?://forge\.puppetlabs\.com}
uri = "https://forgeapi.puppetlabs.com"
warn { "Replacing Puppet Forge API URL to use v3 #{uri}. You should update your Puppetfile" }
end
@uri = URI::parse(uri)
@cache_path = nil
end
|
Instance Attribute Details
#environment ⇒ Object
Returns the value of attribute environment.
57
58
59
|
# File 'lib/librarian/puppet/source/forge.rb', line 57
def environment
@environment
end
|
#uri ⇒ Object
Returns the value of attribute uri.
59
60
61
|
# File 'lib/librarian/puppet/source/forge.rb', line 59
def uri
@uri
end
|
Class Method Details
.client_api_version ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/librarian/puppet/source/forge.rb', line 41
def client_api_version()
version = 1
pe_version = Librarian::Puppet.puppet_version.match(/\(Puppet Enterprise (.+)\)/)
if Librarian::Puppet::puppet_gem_version >= Gem::Version.create('3.6.0.a')
version = 3
elsif pe_version and Gem::Version.create(pe_version[1].strip) >= Gem::Version.create('3.2.0')
version = 3
end
return version
end
|
.default ⇒ Object
19
20
21
|
# File 'lib/librarian/puppet/source/forge.rb', line 19
def default
@@default
end
|
.default=(source) ⇒ Object
15
16
17
|
# File 'lib/librarian/puppet/source/forge.rb', line 15
def default=(source)
@@default = source
end
|
.from_lock_options(environment, options) ⇒ Object
27
28
29
|
# File 'lib/librarian/puppet/source/forge.rb', line 27
def from_lock_options(environment, options)
new(environment, options[:remote], options.reject { |k, v| k == :remote })
end
|
.from_spec_args(environment, uri, options) ⇒ Object
31
32
33
34
35
36
37
38
39
|
# File 'lib/librarian/puppet/source/forge.rb', line 31
def from_spec_args(environment, uri, options)
recognised_options = []
unrecognised_options = options.keys - recognised_options
unless unrecognised_options.empty?
raise Error, "unrecognised options: #{unrecognised_options.join(", ")}"
end
new(environment, uri, options)
end
|
.lock_name ⇒ Object
23
24
25
|
# File 'lib/librarian/puppet/source/forge.rb', line 23
def lock_name
LOCK_NAME
end
|
Instance Method Details
#==(other) ⇒ Object
Also known as:
eql?
77
78
79
80
81
|
# File 'lib/librarian/puppet/source/forge.rb', line 77
def ==(other)
other &&
self.class == other.class &&
self.uri == other.uri
end
|
#cache_path ⇒ Object
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/librarian/puppet/source/forge.rb', line 124
def cache_path
@cache_path ||= begin
if environment.use_short_cache_path
dir = Digest::SHA1.hexdigest("#{uri.host}#{uri.path}")[0..6]
else
dir = "#{uri.host}#{uri.path}".gsub(/[^0-9a-z\-_]/i, '_')
end
environment.cache_path.join("source/p/f/#{dir}")
end
end
|
#fetch_dependencies(name, version, version_uri) ⇒ Object
150
151
152
153
154
155
|
# File 'lib/librarian/puppet/source/forge.rb', line 150
def fetch_dependencies(name, version, version_uri)
repo(name).dependencies(version).map do |k, v|
v = Librarian::Dependency::Requirement.new(v).to_gem_requirement
Dependency.new(k, v, nil, name)
end
end
|
#fetch_version(name, version_uri) ⇒ Object
141
142
143
144
145
146
147
148
|
# File 'lib/librarian/puppet/source/forge.rb', line 141
def fetch_version(name, version_uri)
versions = repo(name).versions
if versions.include? version_uri
version_uri
else
versions.first
end
end
|
#hash ⇒ Object
85
86
87
|
# File 'lib/librarian/puppet/source/forge.rb', line 85
def hash
self.to_s.hash
end
|
#install!(manifest) ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/librarian/puppet/source/forge.rb', line 104
def install!(manifest)
manifest.source == self or raise ArgumentError
debug { "Installing #{manifest}" }
name = manifest.name
version = manifest.version
install_path = install_path(name)
repo = repo(name)
repo.install_version! version, install_path
end
|
#install_path(name) ⇒ Object
137
138
139
|
# File 'lib/librarian/puppet/source/forge.rb', line 137
def install_path(name)
environment.install_path.join(module_name(name))
end
|
#manifest(name, version, dependencies) ⇒ Object
117
118
119
120
121
122
|
# File 'lib/librarian/puppet/source/forge.rb', line 117
def manifest(name, version, dependencies)
manifest = Manifest.new(self, name)
manifest.version = version
manifest.dependencies = dependencies
manifest
end
|
#manifests(name) ⇒ Object
157
158
159
|
# File 'lib/librarian/puppet/source/forge.rb', line 157
def manifests(name)
repo(name).manifests
end
|
#pinned? ⇒ Boolean
97
98
99
|
# File 'lib/librarian/puppet/source/forge.rb', line 97
def pinned?
false
end
|
#to_lock_options ⇒ Object
93
94
95
|
# File 'lib/librarian/puppet/source/forge.rb', line 93
def to_lock_options
{:remote => uri.to_s}
end
|
#to_s ⇒ Object
73
74
75
|
# File 'lib/librarian/puppet/source/forge.rb', line 73
def to_s
clean_uri(uri).to_s
end
|
#to_spec_args ⇒ Object
89
90
91
|
# File 'lib/librarian/puppet/source/forge.rb', line 89
def to_spec_args
[clean_uri(uri).to_s, {}]
end
|
#unpin! ⇒ Object
101
102
|
# File 'lib/librarian/puppet/source/forge.rb', line 101
def unpin!
end
|