puppetfile-updater 0.3.2 → 0.6.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 +5 -13
- data/augeas/lenses/puppetfile.aug +27 -10
- data/lib/puppetfile-updater/task.rb +39 -22
- metadata +15 -17
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZGQwZTA3ZmU4YjVlMmJhZjk2NjQ3ZmNjNGQxMDEyMjFmYWQ2NjFiNQ==
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 67afad5138980f13a131de2838390bce5e7a282288c38dea365e4051ab525350
|
4
|
+
data.tar.gz: 85a0eade9472640b6f027f5b665f8013399bf6e1bd904ba22f8372433d6e53f7
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
N2Q2YjdkZGRmMTAwZjQwYjY2ZDU0YWU3NjUwOTRhMDNlYjZhNDRkMjQyMDBj
|
11
|
-
ZGYwZjllZDBkNWJlMjRlY2ViZmZiMmI0NjY2YjcxNmU0ZjJhM2U=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NGJjYjY1YWUzN2QwMTYzMDVkYTgyYzBjNWE5ZTM1Mjc5ZGVkM2FlZjM3ZTE4
|
14
|
-
Y2E1NjRmNmFlOGQ5ZjI2NjI2Njk0ZDMxNTM4NjMzMzY3NTE1Zjg1NWJjNGIz
|
15
|
-
NDkxNjhjZTRlNjFkODYyYjhkZTQ3MTUwN2E4ODdiMzI4YmFmYTM=
|
6
|
+
metadata.gz: c004f77860c1d0c7bc3f24468ec5cf60a368302b81fef164d56c37440b504c4ef40992b68e654fd554f34ee7501599a8365ab2f93ef60f4457f50698261fae7f
|
7
|
+
data.tar.gz: e36fa66babe89ed420b98fd72522d4385b59de76be8b55551b8220bbdf1c355df671782ad73f4602403a2bbfb7e41c76c26c11e30cf5d944d0612d4814b8d68a
|
@@ -25,28 +25,45 @@ module Puppetfile =
|
|
25
25
|
(* View: comma
|
26
26
|
a comma, optionally preceded or followed by spaces or newlines *)
|
27
27
|
let comma = del /[ \t\n]*,[ \t\n]*/ ", "
|
28
|
+
let comma_nospace = del /[ \t\n]*,/ ","
|
29
|
+
|
30
|
+
let comment_or_eol = Util.eol | Util.comment_eol
|
31
|
+
let quote_to_comment_or_eol = Quote.do_quote (store /[^#\n]*/) . comment_or_eol
|
32
|
+
|
33
|
+
(* View: moduledir
|
34
|
+
The moduledir setting specifies where modules from the Puppetfile will be installed *)
|
35
|
+
let moduledir = [ Util.indent . key "moduledir" . Sep.space
|
36
|
+
. quote_to_comment_or_eol ]
|
28
37
|
|
29
38
|
(* View: forge
|
30
39
|
a forge entry *)
|
31
|
-
let forge = [ Util.indent . key "forge" . Sep.space
|
40
|
+
let forge = [ Util.indent . key "forge" . Sep.space
|
41
|
+
. quote_to_comment_or_eol ]
|
32
42
|
|
33
43
|
(* View: metadata
|
34
44
|
a metadata entry *)
|
35
|
-
let metadata = [ Util.indent . key "metadata" .
|
45
|
+
let metadata = [ Util.indent . key "metadata" . comment_or_eol ]
|
36
46
|
|
37
47
|
(* View: mod
|
38
48
|
a module entry, with optional version and options *)
|
39
49
|
let mod =
|
40
50
|
let mod_name = Quote.do_quote (store ((Rx.word . /[\/-]/)? . Rx.word))
|
41
|
-
in let version = [ label "@version" . Quote.do_quote (store /[
|
42
|
-
in let
|
43
|
-
|
44
|
-
|
51
|
+
in let version = [ label "@version" . Quote.do_quote (store /[^#:\n]+/) . Util.comment_eol? ]
|
52
|
+
in let sto_opt_val = store /[^#"', \t\n][^#"',\n]*[^#"', \t\n]|[^#"', \t\n]/
|
53
|
+
in let opt = [
|
54
|
+
Util.del_str ":" . key Rx.word
|
55
|
+
. (del /[ \t]*=>[ \t]*/ " => " . Quote.do_quote_opt sto_opt_val)?
|
56
|
+
]
|
57
|
+
in let opt_eol = del /([ \t\n]*\n)?/ ""
|
58
|
+
in let opt_space_or_eol = del /[ \t\n]*/ " "
|
59
|
+
in let comma_opt_eol_comment = comma_nospace . (opt_eol . Util.comment_eol)*
|
60
|
+
. opt_space_or_eol
|
61
|
+
in let opts = Build.opt_list opt comma_opt_eol_comment
|
45
62
|
in [ Util.indent . Util.del_str "mod" . seq "mod" . Sep.space . mod_name
|
46
|
-
. (
|
47
|
-
. (
|
48
|
-
. Util.eol ]
|
63
|
+
. (comma_opt_eol_comment . version)?
|
64
|
+
. (comma_opt_eol_comment . opts . Util.comment_eol?)?
|
65
|
+
. Util.eol ]
|
49
66
|
|
50
67
|
(* View: lns
|
51
68
|
the Puppetfile lens *)
|
52
|
-
let lns = (Util.empty | Util.comment | forge | metadata | mod)*
|
69
|
+
let lns = (Util.empty | Util.comment | forge | metadata | mod | moduledir )*
|
@@ -14,8 +14,10 @@ class PuppetfileUpdater
|
|
14
14
|
attr_accessor :user
|
15
15
|
attr_accessor :module
|
16
16
|
attr_accessor :major
|
17
|
+
attr_accessor :skip_git
|
17
18
|
attr_accessor :gh_login
|
18
19
|
attr_accessor :gh_password
|
20
|
+
attr_accessor :gh_token
|
19
21
|
attr_accessor :debug
|
20
22
|
|
21
23
|
# Public: Initialise a new PuppetfileUpdater::RakeTask.
|
@@ -44,10 +46,21 @@ class PuppetfileUpdater
|
|
44
46
|
|
45
47
|
@user ||= '.*'
|
46
48
|
|
47
|
-
gh_opts =
|
48
|
-
|
49
|
-
|
50
|
-
|
49
|
+
gh_opts = {}
|
50
|
+
|
51
|
+
unless @gh_user.nil?
|
52
|
+
gh_opts = {
|
53
|
+
:login => @gh_login,
|
54
|
+
:password => @gh_password,
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
unless @gh_token.nil?
|
59
|
+
gh_opts = {
|
60
|
+
:access_token => @gh_token,
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
51
64
|
github = Octokit::Client.new gh_opts
|
52
65
|
|
53
66
|
libdir = File.dirname(__FILE__)
|
@@ -62,33 +75,35 @@ class PuppetfileUpdater
|
|
62
75
|
aug.load!
|
63
76
|
|
64
77
|
error_path = '/augeas/files/Puppetfile/error'
|
65
|
-
unless aug.match(
|
78
|
+
unless aug.match(error_path).size == 0
|
66
79
|
msg = "Failed to parse Puppetfile at line #{aug.get(error_path+'/line')}, "
|
67
80
|
msg << "character #{aug.get(error_path+'/char')}: "
|
68
|
-
msg << aug.get('/
|
81
|
+
msg << aug.get(error_path+'/message')
|
69
82
|
abort msg
|
70
83
|
end
|
71
84
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
85
|
+
unless @skip_git
|
86
|
+
# Update from GitHub
|
87
|
+
aug.match("/files/Puppetfile/*[git=~regexp('.*/#{@user}[/-].*')]").each do |mpath|
|
88
|
+
m = aug.get(mpath)
|
89
|
+
puts "D: Considering #{m} for git update" if @debug
|
90
|
+
next if !@module.nil? && @module != m.gsub(%r{.*[-/]}, '')
|
91
|
+
puts "D: #{m} selected by filters" if @debug
|
92
|
+
|
93
|
+
warn "W: #{m} is a fork!" unless m =~ /#{@user}/
|
94
|
+
|
95
|
+
git_url = aug.get("#{mpath}/git")
|
96
|
+
repo = Octokit::Repository.from_url(git_url.gsub(/\.git$/, ''))
|
97
|
+
commits = github.commits(repo)
|
98
|
+
ref = commits[0].sha[0...7]
|
99
|
+
puts "D: New ref for #{m} is #{ref}" if @debug
|
100
|
+
aug.set("#{mpath}/ref", ref)
|
101
|
+
end
|
87
102
|
end
|
88
103
|
|
89
104
|
# Update from Forge
|
90
105
|
PuppetForge.user_agent = 'Puppetfile-Updater/0.1.0'
|
91
|
-
aug.match("/files/Puppetfile/*[label()!='#comment' and .=~regexp('#{@user}
|
106
|
+
aug.match("/files/Puppetfile/*[label()!='#comment' and .=~regexp('#{@user}[/-].*') and @version]").each do |mpath|
|
92
107
|
m = aug.get(mpath).gsub('/', '-')
|
93
108
|
puts "D: Considering #{m} for forge update" if @debug
|
94
109
|
next if !@module.nil? && @module != m.gsub(%r{.*[-/]}, '')
|
@@ -98,6 +113,8 @@ class PuppetfileUpdater
|
|
98
113
|
release = forge_m.releases.select { |r| r.deleted_at.nil? }[0]
|
99
114
|
new_v = release.version
|
100
115
|
puts "D: New version for #{m} is #{new_v}" if @debug
|
116
|
+
|
117
|
+
warn "W: #{m} looks abandoned (version = #{new_v})" if new_v =~ /^99/
|
101
118
|
if new_v.split('.')[0] != v.split('.')[0]
|
102
119
|
if @major
|
103
120
|
warn "W: #{m} has incompatible changes between #{v} and #{new_v}"
|
metadata
CHANGED
@@ -1,75 +1,73 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppetfile-updater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Camptocamp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '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
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ruby-augeas
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '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
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: octokit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: puppet_forge
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description:
|
70
|
-
|
71
|
-
|
72
|
-
'
|
69
|
+
description: " Keep your Puppet file up-to-date with latest versions from the Forge
|
70
|
+
and GitHub.\n"
|
73
71
|
email: raphael.pinson@camptocamp.com
|
74
72
|
executables: []
|
75
73
|
extensions: []
|
@@ -89,17 +87,17 @@ require_paths:
|
|
89
87
|
- lib
|
90
88
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
89
|
requirements:
|
92
|
-
- -
|
90
|
+
- - ">="
|
93
91
|
- !ruby/object:Gem::Version
|
94
92
|
version: '0'
|
95
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
94
|
requirements:
|
97
|
-
- -
|
95
|
+
- - ">="
|
98
96
|
- !ruby/object:Gem::Version
|
99
97
|
version: '0'
|
100
98
|
requirements: []
|
101
99
|
rubyforge_project:
|
102
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.7.7
|
103
101
|
signing_key:
|
104
102
|
specification_version: 4
|
105
103
|
summary: Keep your Puppetfile up-to-date.
|