puppet_forge 3.1.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-rspec.yml +7 -5
- data/.github/workflows/snyk_merge.yml +24 -0
- data/.gitignore +0 -1
- data/CHANGELOG.md +10 -0
- data/README.md +0 -20
- data/Rakefile +0 -6
- data/lib/puppet_forge/connection/connection_failure.rb +4 -14
- data/lib/puppet_forge/connection.rb +2 -1
- data/lib/puppet_forge/error.rb +6 -2
- data/lib/puppet_forge/lazy_relations.rb +1 -1
- data/lib/puppet_forge/unpacker.rb +2 -2
- data/lib/puppet_forge/v3/metadata.rb +9 -8
- data/lib/puppet_forge/v3/release.rb +1 -1
- data/lib/puppet_forge/version.rb +1 -1
- data/lib/puppet_forge.rb +0 -3
- data/puppet_forge.gemspec +4 -8
- metadata +12 -26
- data/locales/config.yaml +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0e379f885f305dfc82f87bfea6ae668d6467595f0083355cbe95c63e9864019
|
4
|
+
data.tar.gz: 1cf23ce28776267459e01bedfed935750650378542b54e1ec3155efb9b67ba60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b32e4f0758fe84f28339cc8a3f57dad01a21abc26a490e7d1b8ac1a4ecdc6e52b961e4c24f0f4a5b476c4fc1ed849bfb42594314a120f6198c06261036702457
|
7
|
+
data.tar.gz: 044a092e9f8e15f078043281bac236c8694c037a1f71bb34a4d0e392379811e88ac9981afa6d75661cc5483a7a3966af26def433fe2eeb370c9f2d80499fbcba
|
@@ -14,7 +14,11 @@ jobs:
|
|
14
14
|
runs-on: ubuntu-latest
|
15
15
|
strategy:
|
16
16
|
matrix:
|
17
|
-
ruby:
|
17
|
+
ruby:
|
18
|
+
- '3.1'
|
19
|
+
- '3.0'
|
20
|
+
- '2.7'
|
21
|
+
- '2.6'
|
18
22
|
|
19
23
|
steps:
|
20
24
|
- uses: actions/checkout@v1
|
@@ -22,9 +26,7 @@ jobs:
|
|
22
26
|
uses: ruby/setup-ruby@v1
|
23
27
|
with:
|
24
28
|
ruby-version: ${{ matrix.ruby }}
|
29
|
+
bundler-cache: true
|
25
30
|
|
26
31
|
- name: Build and test with Rspec
|
27
|
-
run:
|
28
|
-
gem install bundler
|
29
|
-
bundle install --jobs 4 --retry 3
|
30
|
-
bundle exec rspec
|
32
|
+
run: bundle exec rspec
|
@@ -0,0 +1,24 @@
|
|
1
|
+
name: snyk_merge
|
2
|
+
on:
|
3
|
+
workflow_dispatch:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
jobs:
|
8
|
+
security:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@master
|
12
|
+
- name: setup ruby
|
13
|
+
uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 2.7
|
16
|
+
- name: create lock
|
17
|
+
run: bundle lock
|
18
|
+
- name: Run Snyk to check for vulnerabilities
|
19
|
+
uses: snyk/actions/ruby@master
|
20
|
+
env:
|
21
|
+
SNYK_TOKEN: ${{ secrets.SNYK_FORGE_KEY }}
|
22
|
+
with:
|
23
|
+
command: monitor
|
24
|
+
args: --org=puppet-forge
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,16 @@
|
|
3
3
|
Starting with v2.0.0, all notable changes to this project will be documented in this file.
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## v4.0.0 - 2022-11-30
|
7
|
+
|
8
|
+
* Breaking: The `puppet_forge` gem now requires at least Ruby 2.6.0
|
9
|
+
* Update `faraday` gem to 2.x series
|
10
|
+
|
11
|
+
## v3.2.0 - 2021-11-09
|
12
|
+
|
13
|
+
* Allow requests to follow redirects
|
14
|
+
* Remove the `gettext-setup` gem dependency, which was unused
|
15
|
+
|
6
16
|
## v3.1.0 - 2021-08-20
|
7
17
|
|
8
18
|
### Changed
|
data/README.md
CHANGED
@@ -205,26 +205,6 @@ PuppetForge::Connection.authorization = "<your-api-key-here>"
|
|
205
205
|
|
206
206
|
You can generate API keys on your user profile page once you've [logged into the Forge website](https://forge.puppet.com/login).
|
207
207
|
|
208
|
-
### i18n
|
209
|
-
|
210
|
-
When adding new error or log messages please follow the instructions for
|
211
|
-
[writing translatable code](https://github.com/puppetlabs/gettext-setup-gem#writing-translatable-code).
|
212
|
-
|
213
|
-
The PuppetForge gem will default to outputing all error messages in English, but you may set the locale
|
214
|
-
using the `FastGettext.set_locale` method. If translations do not exist for the language you request then the gem will
|
215
|
-
default to English. The `set_locale` method will return the locale, as a string, that FastGettext will now
|
216
|
-
use to report PuppetForge errors.
|
217
|
-
|
218
|
-
```ruby
|
219
|
-
# Assuming the German translations exist, this will set the reporting language
|
220
|
-
# to German
|
221
|
-
|
222
|
-
locale = FastGettext.set_locale "de_DE"
|
223
|
-
|
224
|
-
# If it successfully finds Germany's locale, locale will be "de_DE"
|
225
|
-
# If it fails to find any German locale, locale will be "en"
|
226
|
-
```
|
227
|
-
|
228
208
|
## Caveats
|
229
209
|
|
230
210
|
This library currently does no response caching of its own, instead opting to
|
data/Rakefile
CHANGED
@@ -9,21 +9,11 @@ module PuppetForge
|
|
9
9
|
@app.call(env)
|
10
10
|
rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e
|
11
11
|
baseurl = env[:url].dup
|
12
|
+
errmsg = "Unable to connect to %{scheme}://%{host}" % { scheme: baseurl.scheme, host: baseurl.host }
|
12
13
|
if proxy = env[:request][:proxy]
|
13
|
-
errmsg
|
14
|
-
scheme: baseurl.scheme,
|
15
|
-
host: baseurl.host,
|
16
|
-
proxy: proxy.uri.to_s,
|
17
|
-
path_query: baseurl.request_uri,
|
18
|
-
}
|
19
|
-
else
|
20
|
-
errmsg = _("Unable to connect to %{scheme}://%{host} (for request %{path_query})") % {
|
21
|
-
scheme: baseurl.scheme,
|
22
|
-
host: baseurl.host,
|
23
|
-
path_query: baseurl.request_uri,
|
24
|
-
}
|
14
|
+
errmsg << " (using proxy %{proxy})" % { proxy: proxy.uri.to_s }
|
25
15
|
end
|
26
|
-
errmsg << ":
|
16
|
+
errmsg << " (for request %{path_query}): %{message}" % { message: e.message, path_query: baseurl.request_uri }
|
27
17
|
m = Faraday::ConnectionFailed.new(errmsg)
|
28
18
|
m.set_backtrace(e.backtrace)
|
29
19
|
raise m
|
@@ -32,4 +22,4 @@ module PuppetForge
|
|
32
22
|
end
|
33
23
|
end
|
34
24
|
|
35
|
-
Faraday::Middleware.register_middleware(:connection_failure =>
|
25
|
+
Faraday::Middleware.register_middleware(:connection_failure => PuppetForge::Connection::ConnectionFailure)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'puppet_forge/connection/connection_failure'
|
2
2
|
|
3
3
|
require 'faraday'
|
4
|
-
require '
|
4
|
+
require 'faraday/follow_redirects'
|
5
5
|
|
6
6
|
module PuppetForge
|
7
7
|
# Provide a common mixin for adding a HTTP connection to classes.
|
@@ -115,6 +115,7 @@ module PuppetForge
|
|
115
115
|
end
|
116
116
|
|
117
117
|
Faraday.new(url, options) do |builder|
|
118
|
+
builder.use Faraday::FollowRedirects::Middleware
|
118
119
|
builder.response(:json, :content_type => /\bjson$/, :parser_options => { :symbolize_names => true })
|
119
120
|
builder.response(:raise_error)
|
120
121
|
builder.use(:connection_failure)
|
data/lib/puppet_forge/error.rb
CHANGED
@@ -16,11 +16,15 @@ module PuppetForge
|
|
16
16
|
def initialize(options)
|
17
17
|
@entry_path = options[:entry_path]
|
18
18
|
@directory = options[:directory]
|
19
|
-
super
|
19
|
+
super "Attempt to install file into #{@entry_path.inspect} under #{@directory.inspect}"
|
20
20
|
end
|
21
21
|
|
22
22
|
def multiline
|
23
|
-
|
23
|
+
<<-MSG.strip
|
24
|
+
Could not install package
|
25
|
+
Package attempted to install file into
|
26
|
+
#{@entry_path.inspect} under #{@directory.inspect}.
|
27
|
+
MSG
|
24
28
|
end
|
25
29
|
end
|
26
30
|
|
@@ -24,7 +24,7 @@ module PuppetForge
|
|
24
24
|
version = class_name.split("::")[-2]
|
25
25
|
|
26
26
|
if version.nil?
|
27
|
-
raise RuntimeError,
|
27
|
+
raise RuntimeError, "Unable to determine the parent PuppetForge version module"
|
28
28
|
end
|
29
29
|
|
30
30
|
PuppetForge.const_get(version)
|
@@ -39,7 +39,7 @@ module PuppetForge
|
|
39
39
|
begin
|
40
40
|
PuppetForge::Tar.instance.unpack(@filename, @tmpdir)
|
41
41
|
rescue PuppetForge::ExecutionFailure => e
|
42
|
-
raise RuntimeError,
|
42
|
+
raise RuntimeError, "Could not extract contents of module archive: #{e.message}"
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -61,7 +61,7 @@ module PuppetForge
|
|
61
61
|
if metadata_file
|
62
62
|
@root_dir = Pathname.new(metadata_file).dirname
|
63
63
|
else
|
64
|
-
raise
|
64
|
+
raise "No valid metadata.json found!"
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -63,7 +63,7 @@ module PuppetForge
|
|
63
63
|
validate_version_range(version_requirement) if version_requirement
|
64
64
|
|
65
65
|
if dup = @data['dependencies'].find { |d| d.full_module_name == name && d.version_requirement != version_requirement }
|
66
|
-
raise ArgumentError,
|
66
|
+
raise ArgumentError, "Dependency conflict for #{full_module_name}: Dependency #{name} was given conflicting version requirements #{version_requirement} and #{dup.version_requirement}. Verify that there are no duplicates in the metadata.json or the Modulefile."
|
67
67
|
end
|
68
68
|
|
69
69
|
dep = Dependency.new(name, version_requirement, repository)
|
@@ -165,30 +165,31 @@ module PuppetForge
|
|
165
165
|
|
166
166
|
err = case modname
|
167
167
|
when nil, '', :namespace_missing
|
168
|
-
|
168
|
+
"the field must be a namespaced module name"
|
169
169
|
when /[^a-z0-9_]/i
|
170
|
-
|
170
|
+
"the module name contains non-alphanumeric (or underscore) characters"
|
171
171
|
when /^[^a-z]/i
|
172
|
-
|
172
|
+
"the module name must begin with a letter"
|
173
173
|
else
|
174
|
-
|
174
|
+
"the namespace contains non-alphanumeric characters"
|
175
175
|
end
|
176
176
|
|
177
|
-
raise ArgumentError,
|
177
|
+
raise ArgumentError, "Invalid 'name' field in metadata.json: #{err}"
|
178
178
|
end
|
179
179
|
|
180
180
|
# Validates that the version string can be parsed by SemanticPuppet.
|
181
181
|
def validate_version(version)
|
182
182
|
return if SemanticPuppet::Version.valid?(version)
|
183
183
|
|
184
|
-
|
184
|
+
err = "version string cannot be parsed as a valid Semantic Version"
|
185
|
+
raise ArgumentError, "Invalid 'version' field in metadata.json: #{err}"
|
185
186
|
end
|
186
187
|
|
187
188
|
# Validates that the version range can be parsed by SemanticPuppet.
|
188
189
|
def validate_version_range(version_range)
|
189
190
|
SemanticPuppet::VersionRange.parse(version_range)
|
190
191
|
rescue ArgumentError => e
|
191
|
-
raise ArgumentError,
|
192
|
+
raise ArgumentError, "Invalid 'version_range' field in metadata.json: #{e}"
|
192
193
|
end
|
193
194
|
end
|
194
195
|
end
|
@@ -29,7 +29,7 @@ module PuppetForge
|
|
29
29
|
resp = self.class.conn.get(download_url)
|
30
30
|
path.open('wb') { |fh| fh.write(resp.body) }
|
31
31
|
rescue Faraday::ResourceNotFound => e
|
32
|
-
raise PuppetForge::ReleaseNotFound,
|
32
|
+
raise PuppetForge::ReleaseNotFound, "The module release #{slug} does not exist on #{self.class.conn.url_prefix}.", e.backtrace
|
33
33
|
rescue Faraday::ClientError => e
|
34
34
|
if e.response && e.response[:status] == 403
|
35
35
|
raise PuppetForge::ReleaseForbidden.from_response(e.response)
|
data/lib/puppet_forge/version.rb
CHANGED
data/lib/puppet_forge.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'puppet_forge/version'
|
2
|
-
require 'gettext-setup'
|
3
2
|
|
4
3
|
module PuppetForge
|
5
4
|
class << self
|
@@ -15,8 +14,6 @@ module PuppetForge
|
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
18
|
-
GettextSetup.initialize(File.absolute_path('../locales', File.dirname(__FILE__)))
|
19
|
-
|
20
17
|
DEFAULT_FORGE_HOST = 'https://forgeapi.puppet.com/'
|
21
18
|
|
22
19
|
self.host = DEFAULT_FORGE_HOST
|
data/puppet_forge.gemspec
CHANGED
@@ -18,13 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>= 2.
|
21
|
+
spec.required_ruby_version = '>= 2.6.0'
|
22
22
|
|
23
|
-
spec.add_runtime_dependency "faraday", "~>
|
24
|
-
spec.add_runtime_dependency "
|
23
|
+
spec.add_runtime_dependency "faraday", "~> 2.0"
|
24
|
+
spec.add_runtime_dependency "faraday-follow_redirects", "~> 0.3.0"
|
25
25
|
spec.add_dependency "semantic_puppet", "~> 1.0"
|
26
26
|
spec.add_dependency "minitar"
|
27
|
-
spec.add_dependency "gettext-setup", "~> 0.11"
|
28
27
|
|
29
28
|
spec.add_development_dependency "rake"
|
30
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
@@ -32,8 +31,5 @@ Gem::Specification.new do |spec|
|
|
32
31
|
spec.add_development_dependency "cane"
|
33
32
|
spec.add_development_dependency "yard"
|
34
33
|
spec.add_development_dependency "redcarpet"
|
35
|
-
|
36
|
-
# Install the right pry debugging combo depending on ruby version.
|
37
|
-
spec.add_development_dependency "pry-debugger" if RUBY_VERSION <= '1.9.3'
|
38
|
-
spec.add_development_dependency "pry-byebug" if RUBY_VERSION >= '2.0.0'
|
34
|
+
spec.add_development_dependency "pry-byebug"
|
39
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet_forge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: faraday-follow_redirects
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.3.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.3.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: semantic_puppet
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: gettext-setup
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.11'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0.11'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rake
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,6 +173,7 @@ extensions: []
|
|
187
173
|
extra_rdoc_files: []
|
188
174
|
files:
|
189
175
|
- ".github/workflows/ruby-rspec.yml"
|
176
|
+
- ".github/workflows/snyk_merge.yml"
|
190
177
|
- ".gitignore"
|
191
178
|
- CHANGELOG.md
|
192
179
|
- CODEOWNERS
|
@@ -212,7 +199,6 @@ files:
|
|
212
199
|
- lib/puppet_forge/v3/release.rb
|
213
200
|
- lib/puppet_forge/v3/user.rb
|
214
201
|
- lib/puppet_forge/version.rb
|
215
|
-
- locales/config.yaml
|
216
202
|
- puppet_forge.gemspec
|
217
203
|
- spec/fixtures/uri/prefix/v3/bases/puppet.headers
|
218
204
|
- spec/fixtures/uri/prefix/v3/bases/puppet.json
|
@@ -265,7 +251,7 @@ homepage: https://github.com/puppetlabs/forge-ruby
|
|
265
251
|
licenses:
|
266
252
|
- Apache-2.0
|
267
253
|
metadata: {}
|
268
|
-
post_install_message:
|
254
|
+
post_install_message:
|
269
255
|
rdoc_options: []
|
270
256
|
require_paths:
|
271
257
|
- lib
|
@@ -273,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
273
259
|
requirements:
|
274
260
|
- - ">="
|
275
261
|
- !ruby/object:Gem::Version
|
276
|
-
version: 2.
|
262
|
+
version: 2.6.0
|
277
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
264
|
requirements:
|
279
265
|
- - ">="
|
@@ -281,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
281
267
|
version: '0'
|
282
268
|
requirements: []
|
283
269
|
rubygems_version: 3.1.6
|
284
|
-
signing_key:
|
270
|
+
signing_key:
|
285
271
|
specification_version: 4
|
286
272
|
summary: Access the Puppet Forge API from Ruby for resource information and to download
|
287
273
|
releases.
|
data/locales/config.yaml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
---
|
2
|
-
# This is the project-specific configuration file for setting up
|
3
|
-
# fast_gettext for your project.
|
4
|
-
gettext:
|
5
|
-
# This is used for the name of the .pot and .po files; they will be
|
6
|
-
# called <project_name>.pot?
|
7
|
-
project_name: 'forge-ruby'
|
8
|
-
# This is used in comments in the .pot and .po files to indicate what
|
9
|
-
# project the files belong to and should bea little more desctiptive than
|
10
|
-
# <project_name>
|
11
|
-
package_name: Puppet Forge Gem
|
12
|
-
# The locale that the default messages in the .pot file are in
|
13
|
-
default_locale: en
|
14
|
-
# The email used for sending bug reports.
|
15
|
-
bugs_address: docs@puppetlabs.com
|
16
|
-
# The holder of the copyright.
|
17
|
-
copyright_holder: Puppet, Inc.
|
18
|
-
# Patterns for +Dir.glob+ used to find all files that might contain
|
19
|
-
# translatable content, relative to the project root directory
|
20
|
-
source_files:
|
21
|
-
- 'lib/**/*.rb'
|