ra10ke 0.6.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +11 -0
- data/.github/workflows/release.yml +32 -0
- data/.github/workflows/test.yml +35 -0
- data/.gitignore +3 -0
- data/.ruby-version +1 -1
- data/.travis.yml +1 -0
- data/CHANGELOG.md +74 -2
- data/Gemfile +9 -0
- data/HISTORY.md +118 -0
- data/README.md +56 -9
- data/Rakefile +13 -0
- data/lib/ra10ke/dependencies.rb +34 -12
- data/lib/ra10ke/deprecation.rb +72 -0
- data/lib/ra10ke/duplicates.rb +79 -0
- data/lib/ra10ke/git_repo.rb +116 -0
- data/lib/ra10ke/puppetfile_parser.rb +9 -2
- data/lib/ra10ke/validate.rb +18 -60
- data/lib/ra10ke/version.rb +1 -1
- data/lib/ra10ke.rb +8 -0
- data/ra10ke.gemspec +7 -4
- data/spec/fixtures/Puppetfile +7 -1
- data/spec/fixtures/Puppetfile_with_bad_refs +3 -0
- data/spec/fixtures/Puppetfile_with_control_branch +23 -0
- data/spec/fixtures/Puppetfile_with_duplicates +50 -0
- data/spec/fixtures/refs/debug.txt +0 -0
- data/spec/fixtures/refs/gitlab.txt +285 -0
- data/spec/fixtures/refs/r10k.txt +120 -0
- data/spec/fixtures/{reflist.txt → refs/reflist.txt} +1 -0
- data/spec/ra10ke/dependencies_spec.rb +72 -0
- data/spec/ra10ke/deprecation_spec.rb +37 -0
- data/spec/ra10ke/duplicates_spec.rb +31 -0
- data/spec/ra10ke/git_repo_spec.rb +88 -0
- data/spec/ra10ke/puppetfile_parser_spec.rb +11 -3
- data/spec/ra10ke/validate_spec.rb +87 -36
- data/spec/ra10ke_spec.rb +6 -4
- data/spec/spec_helper.rb +28 -0
- metadata +53 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64e7e73cfb508697efd25e4aec36655c126a168a81fca44345f6564929be6bcd
|
4
|
+
data.tar.gz: 2139cb8c668b255a04d975121014006bd94cc4a4b45d71008e37e9e1341c74d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d05765b4c95390301ec8c6e0917f251ee60333b09810174c643d1d6a5608824ee96c46d334f60232beb026ea28caa4c4c5ea0e1e6b72b0f12ff7c7fdda6783b4
|
7
|
+
data.tar.gz: dc0317d3c47ce2e18e9c8818d7dd468f0acdd8e5a8047dad637938f40745196c66369ac4741293e092f8ab28e6a115aec70e936ea8845cb133c6f1f9108a0cd0
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
3
|
+
# Please see the documentation for all configuration options:
|
4
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
5
|
+
|
6
|
+
version: 2
|
7
|
+
updates:
|
8
|
+
- package-ecosystem: "bundler" # See documentation for possible values
|
9
|
+
directory: "/" # Location of package manifests
|
10
|
+
schedule:
|
11
|
+
interval: "daily"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
name: Release
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- '*'
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
release:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
if: github.repository_owner == 'voxpupuli'
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- name: Install Ruby 3.0
|
15
|
+
uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
ruby-version: '3.0'
|
18
|
+
env:
|
19
|
+
BUNDLE_WITHOUT: release
|
20
|
+
- name: Build gem
|
21
|
+
run: gem build *.gemspec
|
22
|
+
- name: Publish gem to rubygems.org
|
23
|
+
run: gem push *.gem
|
24
|
+
env:
|
25
|
+
GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_AUTH_TOKEN }}'
|
26
|
+
- name: Setup GitHub packages access
|
27
|
+
run: |
|
28
|
+
mkdir -p ~/.gem
|
29
|
+
echo ":github: Bearer ${{ secrets.GITHUB_TOKEN }}" >> ~/.gem/credentials
|
30
|
+
chmod 0600 ~/.gem/credentials
|
31
|
+
- name: Publish gem to GitHub packages
|
32
|
+
run: gem push --key github --host https://rubygems.pkg.github.com/voxpupuli *.gem
|
@@ -0,0 +1,35 @@
|
|
1
|
+
name: Test
|
2
|
+
|
3
|
+
on:
|
4
|
+
- pull_request
|
5
|
+
- push
|
6
|
+
|
7
|
+
env:
|
8
|
+
BUNDLE_WITHOUT: release
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
test:
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
strategy:
|
14
|
+
fail-fast: false
|
15
|
+
matrix:
|
16
|
+
include:
|
17
|
+
- ruby: "2.4"
|
18
|
+
- ruby: "2.5"
|
19
|
+
- ruby: "2.6"
|
20
|
+
- ruby: "2.7"
|
21
|
+
- ruby: "3.0"
|
22
|
+
coverage: "yes"
|
23
|
+
env:
|
24
|
+
COVERAGE: ${{ matrix.coverage }}
|
25
|
+
steps:
|
26
|
+
- uses: actions/checkout@v2
|
27
|
+
- name: Install Ruby ${{ matrix.ruby }}
|
28
|
+
uses: ruby/setup-ruby@v1
|
29
|
+
with:
|
30
|
+
ruby-version: ${{ matrix.ruby }}
|
31
|
+
bundler-cache: true
|
32
|
+
- name: Run tests
|
33
|
+
run: bundle exec rake
|
34
|
+
- name: Build gem
|
35
|
+
run: gem build *.gemspec
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.5.
|
1
|
+
2.5.7
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,74 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
## [v1.1.0](https://github.com/voxpupuli/ra10ke/tree/v1.1.0) (2021-10-26)
|
6
|
+
|
7
|
+
[Full Changelog](https://github.com/voxpupuli/ra10ke/compare/v1.0.0...v1.1.0)
|
8
|
+
|
9
|
+
**Implemented enhancements:**
|
10
|
+
|
11
|
+
- Support r10k:validate with control\_branch [\#58](https://github.com/voxpupuli/ra10ke/issues/58)
|
12
|
+
- Implement GitHub Actions and fix tests [\#62](https://github.com/voxpupuli/ra10ke/pull/62) ([bastelfreak](https://github.com/bastelfreak))
|
13
|
+
- Add handling for additional r10k args in validate for control\_branch [\#61](https://github.com/voxpupuli/ra10ke/pull/61) ([ananace](https://github.com/ananace))
|
14
|
+
- Add r10k:deprecation task [\#60](https://github.com/voxpupuli/ra10ke/pull/60) ([ananace](https://github.com/ananace))
|
15
|
+
- Support r10k:validate with control\_branch modules [\#59](https://github.com/voxpupuli/ra10ke/pull/59) ([ananace](https://github.com/ananace))
|
16
|
+
- allow to add other version formats in dependencies [\#56](https://github.com/voxpupuli/ra10ke/pull/56) ([jduepmeier](https://github.com/jduepmeier))
|
17
|
+
- Fixes \#52 - validate task fails when repo does not exist [\#53](https://github.com/voxpupuli/ra10ke/pull/53) ([logicminds](https://github.com/logicminds))
|
18
|
+
|
19
|
+
**Fixed bugs:**
|
20
|
+
|
21
|
+
- Fix source of control\_branch data [\#63](https://github.com/voxpupuli/ra10ke/pull/63) ([ananace](https://github.com/ananace))
|
22
|
+
|
23
|
+
**Closed issues:**
|
24
|
+
|
25
|
+
- validate task fails when repo does not exist [\#52](https://github.com/voxpupuli/ra10ke/issues/52)
|
26
|
+
|
27
|
+
**Merged pull requests:**
|
28
|
+
|
29
|
+
- Add Dependabot config [\#65](https://github.com/voxpupuli/ra10ke/pull/65) ([bastelfreak](https://github.com/bastelfreak))
|
30
|
+
- Set minimal Ruby version to 2.4.0 [\#64](https://github.com/voxpupuli/ra10ke/pull/64) ([bastelfreak](https://github.com/bastelfreak))
|
31
|
+
- Add coverage reports [\#54](https://github.com/voxpupuli/ra10ke/pull/54) ([logicminds](https://github.com/logicminds))
|
32
|
+
|
33
|
+
## [v1.0.0](https://github.com/voxpupuli/ra10ke/tree/v1.0.0) (2020-02-08)
|
34
|
+
|
35
|
+
2020-02-08
|
36
|
+
|
37
|
+
Closed Pull Requests:
|
38
|
+
|
39
|
+
* [#44](https://github.com/voxpupuli/ra10ke/pull/44) - Fix the faulty docs for Ra10ke::Validate#all_refs after [#42](https://github.com/voxpupuli/ra10ke/pull/42)
|
40
|
+
* [#45](https://github.com/voxpupuli/ra10ke/pull/45) - Add a duplicates check
|
41
|
+
* [#48](https://github.com/voxpupuli/ra10ke/pull/48) - Allow semverse 3.x
|
42
|
+
|
43
|
+
0.6.2
|
44
|
+
-----
|
45
|
+
|
46
|
+
2019-08-26
|
47
|
+
|
48
|
+
Closed Pull Requests:
|
49
|
+
|
50
|
+
* [#42](https://github.com/voxpupuli/ra10ke/pull/42) - Fix lost refs in validation
|
51
|
+
|
52
|
+
Again many thanks to the following contributors for submitting PRs:
|
53
|
+
|
54
|
+
* [Alexander Olofsson](https://github.com/ananace)
|
55
|
+
|
56
|
+
0.6.1
|
57
|
+
-----
|
58
|
+
|
59
|
+
2019-08-17
|
60
|
+
|
61
|
+
Closed Pull Requests:
|
62
|
+
|
63
|
+
* [#40](https://github.com/voxpupuli/ra10ke/pull/40) - Fix a fault in the mod handling behaviour
|
64
|
+
|
65
|
+
Closed Issues:
|
66
|
+
|
67
|
+
* [#25](https://github.com/voxpupuli/ra10ke/issues/25) - Consider making r10k:install have a default path of '.'
|
68
|
+
|
69
|
+
Many thanks to the following contributors for submitting PRs:
|
70
|
+
|
71
|
+
* [Alexander Olofsson](https://github.com/ananace)
|
3
72
|
|
4
73
|
0.6.0
|
5
74
|
-----
|
@@ -79,3 +148,6 @@ Many thanks to [Alexander "Ace" Olofsson](https://github.com/ace13) and [James P
|
|
79
148
|
2015-12-07
|
80
149
|
|
81
150
|
* Initial release
|
151
|
+
|
152
|
+
|
153
|
+
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
data/Gemfile
CHANGED
@@ -2,3 +2,12 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in ra10ke.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
group :release do
|
7
|
+
gem 'github_changelog_generator', :require => false
|
8
|
+
end
|
9
|
+
|
10
|
+
group :coverage, optional: ENV['COVERAGE']!='yes' do
|
11
|
+
gem 'simplecov-console', :require => false
|
12
|
+
gem 'codecov', :require => false
|
13
|
+
end
|
data/HISTORY.md
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
## [v1.0.0](https://github.com/voxpupuli/ra10ke/tree/v1.0.0) (2020-02-08)
|
2
|
+
|
3
|
+
2020-02-08
|
4
|
+
|
5
|
+
Closed Pull Requests:
|
6
|
+
|
7
|
+
* [#44](https://github.com/voxpupuli/ra10ke/pull/44) - Fix the faulty docs for Ra10ke::Validate#all_refs after [#42](https://github.com/voxpupuli/ra10ke/pull/42)
|
8
|
+
* [#45](https://github.com/voxpupuli/ra10ke/pull/45) - Add a duplicates check
|
9
|
+
* [#48](https://github.com/voxpupuli/ra10ke/pull/48) - Allow semverse 3.x
|
10
|
+
|
11
|
+
0.6.2
|
12
|
+
-----
|
13
|
+
|
14
|
+
2019-08-26
|
15
|
+
|
16
|
+
Closed Pull Requests:
|
17
|
+
|
18
|
+
* [#42](https://github.com/voxpupuli/ra10ke/pull/42) - Fix lost refs in validation
|
19
|
+
|
20
|
+
Again many thanks to the following contributors for submitting PRs:
|
21
|
+
|
22
|
+
* [Alexander Olofsson](https://github.com/ananace)
|
23
|
+
|
24
|
+
0.6.1
|
25
|
+
-----
|
26
|
+
|
27
|
+
2019-08-17
|
28
|
+
|
29
|
+
Closed Pull Requests:
|
30
|
+
|
31
|
+
* [#40](https://github.com/voxpupuli/ra10ke/pull/40) - Fix a fault in the mod handling behaviour
|
32
|
+
|
33
|
+
Closed Issues:
|
34
|
+
|
35
|
+
* [#25](https://github.com/voxpupuli/ra10ke/issues/25) - Consider making r10k:install have a default path of '.'
|
36
|
+
|
37
|
+
Many thanks to the following contributors for submitting PRs:
|
38
|
+
|
39
|
+
* [Alexander Olofsson](https://github.com/ananace)
|
40
|
+
|
41
|
+
0.6.0
|
42
|
+
-----
|
43
|
+
|
44
|
+
2019-07-30
|
45
|
+
|
46
|
+
Closed Pull Requests:
|
47
|
+
|
48
|
+
* [#35](https://github.com/voxpupuli/ra10ke/pull/35) Adds new validate task for verifying the integrity of all modules specified in the Puppetfile
|
49
|
+
* [#33](https://github.com/voxpupuli/ra10ke/pull/33) Refactor tasks, Version tag handling fix, purge option
|
50
|
+
* [#32](https://github.com/voxpupuli/ra10ke/pull/32) Make it possible to configure the tasks in the rakefile
|
51
|
+
|
52
|
+
Many thanks to the following contributors for submitting PRs:
|
53
|
+
|
54
|
+
* [Corey Osman](https://github.com/logicminds)
|
55
|
+
* [Andreas Zuber](https://github.com/ZeroPointEnergy)
|
56
|
+
|
57
|
+
0.5.0
|
58
|
+
-----
|
59
|
+
|
60
|
+
2018-12-26
|
61
|
+
|
62
|
+
Closed Pull Requests:
|
63
|
+
|
64
|
+
* [#22](https://github.com/voxpupuli/ra10ke/pull/22) Add rudimentary r10k:install task
|
65
|
+
* [#26](https://github.com/voxpupuli/ra10ke/pull/26) make use of the forge command in puppetfile
|
66
|
+
* [#29](https://github.com/voxpupuli/ra10ke/pull/29) Abort (exit 1) if Puppetfile syntax check fails
|
67
|
+
* [#30](https://github.com/voxpupuli/ra10ke/pull/30) enable travis deployment
|
68
|
+
|
69
|
+
0.4.0
|
70
|
+
-----
|
71
|
+
|
72
|
+
2018-06-17
|
73
|
+
|
74
|
+
* [#13](https://github.com/voxpupuli/ra10ke/pull/13) Avoid using `desired_ref` directly for Git
|
75
|
+
* [#14](https://github.com/voxpupuli/ra10ke/pull/14) Set required Ruby version as `>= 2.1.0`
|
76
|
+
* [#15](https://github.com/voxpupuli/ra10ke/pull/15) ignore invalid ref
|
77
|
+
* [#16](https://github.com/voxpupuli/ra10ke/pull/16) Use Semantic Versioning for Git tags
|
78
|
+
* [#17](https://github.com/voxpupuli/ra10ke/pull/17) Be careful around trimming Git tags
|
79
|
+
* [#19](https://github.com/voxpupuli/ra10ke/pull/19) Ensure Puppetfile gets parsed with absolute path
|
80
|
+
|
81
|
+
Many thanks to the following contributors for submitting the PRs:
|
82
|
+
* [Valter Jansons](https://github.com/sigv)
|
83
|
+
* [Martin Alfke](https://github.com/tuxmea)
|
84
|
+
* [Matthias Baur](https://github.com/baurmatt)
|
85
|
+
|
86
|
+
0.3.0
|
87
|
+
-----
|
88
|
+
|
89
|
+
2017-10-08
|
90
|
+
|
91
|
+
* [#6](https://github.com/voxpupuli/ra10ke/pull/6) Add a dependency solver based on the Ruby Solve library (thanks to [Jarkko Oranen](https://github.com/oranenj))
|
92
|
+
* [#8](https://github.com/voxpupuli/ra10ke/pull/8) Add numeric tag convention support (thanks to [Hervé MARTIN](https://github.com/HerveMARTIN))
|
93
|
+
|
94
|
+
0.2.0
|
95
|
+
-----
|
96
|
+
|
97
|
+
2017-01-03
|
98
|
+
|
99
|
+
* Moved to [Vox Pupuli](https://voxpupuli.org/)
|
100
|
+
* [#3](https://github.com/voxpupuli/ra10ke/pull/3) Update ra10ke with r10k 2.4.0 support
|
101
|
+
* [#4](https://github.com/voxpupuli/ra10ke/pull/4) Added git support
|
102
|
+
|
103
|
+
Many thanks to [Alexander "Ace" Olofsson](https://github.com/ace13) and [James Powis](https://github.com/james-powis) for their contributions!
|
104
|
+
|
105
|
+
0.1.1
|
106
|
+
-----
|
107
|
+
|
108
|
+
2016-08-22
|
109
|
+
|
110
|
+
* [#1](https://github.com/tampakrap/ra10ke/issues/1) update docs to mention Gemfile and Rakefile
|
111
|
+
* properly advertise the user agent
|
112
|
+
|
113
|
+
0.1.0
|
114
|
+
-----
|
115
|
+
|
116
|
+
2015-12-07
|
117
|
+
|
118
|
+
* Initial release
|
data/README.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
ra10ke
|
2
2
|
======
|
3
3
|
|
4
|
-
[](https://github.com/voxpupuli/ra10ke/blob/master/LICENSE.txt)
|
5
|
+
[](https://github.com/voxpupuli/ra10ke/actions/workflows/test.yml)
|
6
|
+
[](https://codecov.io/gh/voxpupuli/ra10ke)
|
7
|
+
[](https://github.com/voxpupuli/ra10ke/actions/workflows/release.yml)
|
8
|
+
[](https://rubygems.org/gems/ra10ke)
|
9
|
+
[](https://rubygems.org/gems/ra10ke)
|
5
10
|
|
6
11
|
Rake tasks related to [R10K](https://github.com/puppetlabs/r10k) and
|
7
12
|
[Puppetfile](https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd).
|
@@ -79,6 +84,15 @@ runs faster.
|
|
79
84
|
|
80
85
|
Reads the Puppetfile in the current directory and installs them under the `path` provided as an argument.
|
81
86
|
|
87
|
+
#### Limitations
|
88
|
+
|
89
|
+
* It works only with modules from the [Forge](https://forge.puppetlabs.com), and Git.
|
90
|
+
SVN modules will be ignored.
|
91
|
+
* Git support is explicitly SHA Ref and Tag supported. If tag is used it must follow
|
92
|
+
`v0.0.0` convention, other wise it will be ignored.
|
93
|
+
* The version has to be specified explicitly. If it is omitted, or it is
|
94
|
+
`:latest`, the module will be ignored.
|
95
|
+
|
82
96
|
### r10k:validate[path]
|
83
97
|
The validate rake task will determine if the url is a valid url by connecting
|
84
98
|
to the repository and verififying it actually exists and can be accessed.
|
@@ -102,7 +116,7 @@ Example
|
|
102
116
|
```
|
103
117
|
NAME | URL | REF | STATUS
|
104
118
|
---------|-----------------------------------------------|--------------------------------|-------
|
105
|
-
splunk | https://github.com/cudgel/splunk.git |
|
119
|
+
splunk | https://github.com/cudgel/splunk.git | dev | 👍
|
106
120
|
r10k | https://github.com/acidprime/r10k | v3.1.1 | 👍
|
107
121
|
gms | https://github.com/npwalker/abrader-gms | gitlab_disable_ssl_verify_s... | 👍
|
108
122
|
rbac | https://github.com/puppetlabs/pltraining-rbac | 2f60e1789a721ce83f8df061e13... | 👍
|
@@ -114,11 +128,44 @@ gitlab | https://github.com/vshn/puppet-gitlab | 00397b86dfb3487d9df76
|
|
114
128
|
👍👍 Puppetfile looks good.👍👍
|
115
129
|
```
|
116
130
|
|
117
|
-
|
131
|
+
### r10k:duplicates
|
118
132
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
133
|
+
This rake task parses the Puppetfile and looks for modules with duplicate
|
134
|
+
declarations.
|
135
|
+
|
136
|
+
All found duplicates are reported along with their source and their version
|
137
|
+
(if taken from the Forge) or their ref/tag/branch. (if taken from git)
|
138
|
+
|
139
|
+
Example
|
140
|
+
|
141
|
+
```
|
142
|
+
puppet:
|
143
|
+
- abstractit/puppet from the forge at version 2.4.1
|
144
|
+
- theforeman/puppet from the forge at version 12.0.1
|
145
|
+
- puppet from git on the branch master at https://github.com/voxpupuli/puppet-module.git
|
146
|
+
|
147
|
+
gitlab:
|
148
|
+
- puppet/gitlab from the forge at version 4.0.1
|
149
|
+
- gitlab from git on the ref 00397b86dfb3487d9df768cbd3698d362132b5bf at https://github.com/vshn/puppet-gitlab
|
150
|
+
|
151
|
+
Error: Duplicates exist in the Puppetfile
|
152
|
+
```
|
153
|
+
|
154
|
+
### r10k:deprecation
|
155
|
+
|
156
|
+
This rake task checks all the Forge modules listed in the Puppetfile, looking
|
157
|
+
for modules that are marked as deprecated on the Forge.
|
158
|
+
|
159
|
+
Example
|
160
|
+
|
161
|
+
```
|
162
|
+
NAME | DEPRECATED_AT
|
163
|
+
------------------------|--------------------------
|
164
|
+
kemra102-auditd | 2021-07-22 12:11:46
|
165
|
+
puppet-staging | 2018-12-18 11:11:29
|
166
|
+
puppetlabs-resource_api | 2021-03-31 12:53:24
|
167
|
+
puppetlabs-ruby | 2021-04-22 10:29:42
|
168
|
+
puppetlabs-translate | 2021-03-19 10:11:51
|
169
|
+
|
170
|
+
Error: Puppetfile contains deprecated modules.
|
171
|
+
```
|
data/Rakefile
CHANGED
@@ -14,3 +14,16 @@ task :default => [:spec]
|
|
14
14
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
15
15
|
spec.pattern = FileList['spec/**/*_spec.rb']
|
16
16
|
end
|
17
|
+
|
18
|
+
begin
|
19
|
+
require 'github_changelog_generator/task'
|
20
|
+
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
21
|
+
version = Ra10ke::VERSION
|
22
|
+
config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/
|
23
|
+
config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file."
|
24
|
+
config.exclude_labels = %w{duplicate question invalid wontfix wont-fix skip-changelog}
|
25
|
+
config.user = 'voxpupuli'
|
26
|
+
config.project = 'ra10ke'
|
27
|
+
end
|
28
|
+
rescue LoadError
|
29
|
+
end
|
data/lib/ra10ke/dependencies.rb
CHANGED
@@ -1,4 +1,34 @@
|
|
1
1
|
module Ra10ke::Dependencies
|
2
|
+
@@version_formats = {}
|
3
|
+
|
4
|
+
# Registers a block that finds the latest version.
|
5
|
+
# The block will be called with a list of tags.
|
6
|
+
# If the block returns nil the next format will be tried.
|
7
|
+
def self.register_version_format(name, &block)
|
8
|
+
@@version_formats[name] = block
|
9
|
+
end
|
10
|
+
|
11
|
+
# semver is the default version format.
|
12
|
+
register_version_format(:semver) do |tags|
|
13
|
+
latest_tag = tags.map do |tag|
|
14
|
+
begin
|
15
|
+
Semverse::Version.new tag[/\Av?(.*)\Z/, 1]
|
16
|
+
rescue Semverse::InvalidVersionFormat
|
17
|
+
# ignore tags that do not comply to semver
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end.select { |tag| !tag.nil? }.sort.last.to_s.downcase
|
21
|
+
latest_ref = tags.detect { |tag| tag[/\Av?(.*)\Z/, 1] == latest_tag }
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_latest_ref(remote_refs)
|
25
|
+
tags = remote_refs['tags'].keys
|
26
|
+
latest_ref = nil
|
27
|
+
@@version_formats.detect { |_, block| latest_ref = block.call(tags) }
|
28
|
+
latest_ref = 'undef (tags do not follow any known pattern)' if latest_ref.nil?
|
29
|
+
latest_ref
|
30
|
+
end
|
31
|
+
|
2
32
|
def define_task_dependencies(*_args)
|
3
33
|
desc "Print outdated forge modules"
|
4
34
|
task :dependencies do
|
@@ -44,17 +74,10 @@ module Ra10ke::Dependencies
|
|
44
74
|
# we have to be be opinionated here
|
45
75
|
# so semantic versioning (vX.Y.Z) it is for us
|
46
76
|
# as well as support for skipping the leading v letter
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
rescue Semverse::InvalidVersionFormat
|
52
|
-
# ignore tags that do not comply to semver
|
53
|
-
nil
|
54
|
-
end
|
55
|
-
end.select { |tag| !tag.nil? }.sort.last.to_s.downcase
|
56
|
-
latest_ref = tags.detect { |tag| tag[/\Av?(.*)\Z/, 1] == latest_tag }
|
57
|
-
latest_ref = 'undef (tags do not match semantic versioning)' if latest_ref.nil?
|
77
|
+
#
|
78
|
+
# register own version formats with
|
79
|
+
# Ra10ke::Dependencies.register_version_format(:name, &block)
|
80
|
+
latest_ref = get_latest_ref(remote_refs)
|
58
81
|
elsif ref.match(/^[a-z0-9]{40}$/)
|
59
82
|
# for sha just assume head should be tracked
|
60
83
|
latest_ref = remote_refs['head'][:sha]
|
@@ -66,6 +89,5 @@ module Ra10ke::Dependencies
|
|
66
89
|
end
|
67
90
|
end
|
68
91
|
end
|
69
|
-
|
70
92
|
end
|
71
93
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ra10ke/puppetfile_parser'
|
4
|
+
require 'English'
|
5
|
+
require 'puppet_forge'
|
6
|
+
require 'table_print'
|
7
|
+
require 'time'
|
8
|
+
|
9
|
+
module Ra10ke::Deprecation
|
10
|
+
# Validate the git urls and refs
|
11
|
+
def define_task_deprecation(*)
|
12
|
+
desc 'Validate that no forge modules are deprecated'
|
13
|
+
task :deprecation do
|
14
|
+
valid = Ra10ke::Deprecation::Validation.new(get_puppetfile.puppetfile_path)
|
15
|
+
exit_code = 0
|
16
|
+
if valid.bad_mods?
|
17
|
+
exit_code = 1
|
18
|
+
message = "\nError: Puppetfile contains deprecated modules."
|
19
|
+
tp valid.sorted_mods, :name, :deprecated_at
|
20
|
+
else
|
21
|
+
message = 'Puppetfile contains no deprecated Forge modules.'
|
22
|
+
end
|
23
|
+
abort(message) if exit_code.positive?
|
24
|
+
|
25
|
+
puts message
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Validation
|
30
|
+
include Ra10ke::PuppetfileParser
|
31
|
+
|
32
|
+
attr_reader :puppetfile
|
33
|
+
|
34
|
+
def initialize(file)
|
35
|
+
file ||= './Puppetfile'
|
36
|
+
@puppetfile = File.expand_path(file)
|
37
|
+
abort("Puppetfile does not exist at #{puppetfile}") unless File.readable?(puppetfile)
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return [Array[Hash]] array of module information and git status
|
41
|
+
def deprecated_modules
|
42
|
+
@deprecated_modules ||= begin
|
43
|
+
deprecated = forge_modules(puppetfile).map do |mod|
|
44
|
+
# For Ruby 2.4 support
|
45
|
+
begin # rubocop:disable Style/RedundantBegin
|
46
|
+
module_name = "#{mod[:namespace] || mod[:name]}-#{mod[:name]}"
|
47
|
+
forge_data = PuppetForge::Module.find(module_name)
|
48
|
+
|
49
|
+
next forge_data if forge_data.deprecated_at
|
50
|
+
|
51
|
+
nil
|
52
|
+
rescue Faraday::ResourceNotFound
|
53
|
+
nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
deprecated.compact.map do |mod|
|
57
|
+
{ name: mod.slug, deprecated_at: Time.parse(mod.deprecated_at) }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [Boolean] - true if there are any bad mods
|
63
|
+
def bad_mods?
|
64
|
+
deprecated_modules.any?
|
65
|
+
end
|
66
|
+
|
67
|
+
# @return [Hash] - sorts the mods based on good/bad
|
68
|
+
def sorted_mods
|
69
|
+
deprecated_modules.sort_by { |a| a[:name] }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ra10ke/monkey_patches'
|
4
|
+
require 'ra10ke/puppetfile_parser'
|
5
|
+
|
6
|
+
module Ra10ke::Duplicates
|
7
|
+
def define_task_duplicates(*_args)
|
8
|
+
desc "Check Puppetfile for duplicates"
|
9
|
+
task :duplicates do
|
10
|
+
duplicates = Ra10ke::Duplicates::Verification.new(get_puppetfile.puppetfile_path).duplicates
|
11
|
+
exit_code = 0
|
12
|
+
if duplicates.any?
|
13
|
+
exit_code = 1
|
14
|
+
message = 'Error: Duplicates exist in the Puppetfile'
|
15
|
+
|
16
|
+
duplicates.map do |name, sources|
|
17
|
+
puts "#{name}:"
|
18
|
+
sources.each do |source|
|
19
|
+
puts "- #{source}"
|
20
|
+
end
|
21
|
+
|
22
|
+
puts
|
23
|
+
end
|
24
|
+
else
|
25
|
+
message = 'Puppetfile is free of duplicates'
|
26
|
+
end
|
27
|
+
|
28
|
+
abort(message) if exit_code.positive?
|
29
|
+
puts message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Verification
|
34
|
+
include Ra10ke::PuppetfileParser
|
35
|
+
Module = Struct.new(:namespace, :name, :args) do
|
36
|
+
def git?
|
37
|
+
args.key? :git
|
38
|
+
end
|
39
|
+
|
40
|
+
def forge?
|
41
|
+
!git?
|
42
|
+
end
|
43
|
+
|
44
|
+
def type
|
45
|
+
git? ? 'git' : 'forge'
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_s
|
49
|
+
str = "#{[namespace, name].compact.join '/'}"
|
50
|
+
|
51
|
+
if git?
|
52
|
+
ref = args[:ref] || args[:tag] || args[:branch]
|
53
|
+
ref_type = (args[:ref] && 'ref') || (args[:tag] && 'tag') || (args[:branch] && 'branch')
|
54
|
+
str += " from git on the #{ref_type} #{ref} at #{args[:git]}"
|
55
|
+
elsif args.key? :version
|
56
|
+
str += " from the forge at version #{args[:version]}"
|
57
|
+
end
|
58
|
+
|
59
|
+
str
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
attr_reader :puppetfile
|
64
|
+
|
65
|
+
def initialize(file)
|
66
|
+
file ||= './Puppetfile'
|
67
|
+
@puppetfile = File.expand_path(file)
|
68
|
+
abort("Puppetfile does not exist at #{puppetfile}") unless File.readable?(puppetfile)
|
69
|
+
end
|
70
|
+
|
71
|
+
def duplicates
|
72
|
+
to_ret = {}
|
73
|
+
modules(puppetfile).each do |mod|
|
74
|
+
(to_ret[mod[:name]] ||= []) << Module.new(mod[:namespace], mod[:name], mod[:args])
|
75
|
+
end
|
76
|
+
to_ret.select { |_k, v| v.count > 1 }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|