puppetfiler 0.2.1 → 0.2.2
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/CHANGELOG.rst +10 -0
- data/README.rst +4 -0
- data/TODO +2 -0
- data/data/metadata_outdated.json +16 -0
- data/lib/puppetfiler.rb +2 -4
- data/lib/puppetfiler/cli.rb +9 -0
- data/lib/puppetfiler/metadata.rb +30 -1
- data/lib/puppetfiler/mod.rb +7 -3
- data/lib/puppetfiler/puppetfile.rb +17 -9
- data/lib/puppetfiler/version.rb +1 -1
- data/puppetfiler.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6301c789d65bd3d6df07b2b05916b1f4503b29a
|
4
|
+
data.tar.gz: 94ddb535dd4ecdd9f310fb86ebf4e260201c473b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 465a8428eac7ebba4d34b6c8101cf9176e9fb9689b0f9ecf2649d8a2e54d1ca42ebfe1b4d6d880d2cc114f6065efa6d1066667f95644ce03cd9a1cd53a526d62
|
7
|
+
data.tar.gz: 4066cc0a59732f31a45a716eac0ae595fd4b8f5ff73cf0722e38f84e4a966c51c8fee1516aca7e953bd0cb2f7af57882e212eee212d6e05314c62a06b62a6b1f
|
data/CHANGELOG.rst
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
v0.2.2
|
2
|
+
------
|
3
|
+
|
4
|
+
Changes
|
5
|
+
~~~~~~~
|
6
|
+
- ``Puppetfiler::Puppetfile#updates`` uses the ``concurrent-ruby`` gem,
|
7
|
+
shortening the execution time immensely.
|
8
|
+
- ``Puppetfiler::Metadata#updates`` has been added and is also exposed
|
9
|
+
via ``puppetfiler check``.
|
10
|
+
|
1
11
|
v0.2.1
|
2
12
|
------
|
3
13
|
Cosmetical release
|
data/README.rst
CHANGED
@@ -38,6 +38,10 @@ named ``metadata.json``.
|
|
38
38
|
check
|
39
39
|
-----
|
40
40
|
Check puppet forge for newer versions of used forge modules.
|
41
|
+
For Puppetfiles the currently set version on newest on the forge are
|
42
|
+
compared.
|
43
|
+
For metadata.json puppetfiler checks that the newest version on the
|
44
|
+
forge is covered by the range constraint.
|
41
45
|
|
42
46
|
.. code:: sh
|
43
47
|
|
data/TODO
CHANGED
@@ -14,3 +14,5 @@
|
|
14
14
|
However using arubas in-process execution it is possible to use webmock to mock these calls.
|
15
15
|
|
16
16
|
It is quite ugly though: https://github.com/erikhuda/thor/wiki/Integrating-with-Aruba-In-Process-Runs
|
17
|
+
|
18
|
+
* Check if the version and dependency settings are valid in context
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"name": "example-module",
|
3
|
+
"version": "0.1.0",
|
4
|
+
"author": "Some Author",
|
5
|
+
"summary": "Examplary summary",
|
6
|
+
"license": "MIT",
|
7
|
+
"source": "https://github.com/ntnn/puppetfiler",
|
8
|
+
"project_page": "https://github.com/ntnn/puppetfiler",
|
9
|
+
"issues_url": "https://github.com/ntnn/puppetfiler/issues",
|
10
|
+
"dependencies": [
|
11
|
+
{
|
12
|
+
"name": "puppetlabs/stdlib",
|
13
|
+
"version_requirement": ">= 4.13.0 < 4.14.0"
|
14
|
+
}
|
15
|
+
]
|
16
|
+
}
|
data/lib/puppetfiler.rb
CHANGED
@@ -34,13 +34,11 @@ module Puppetfiler
|
|
34
34
|
when :puppetfile
|
35
35
|
t = Puppetfiler::Puppetfile.new(target)
|
36
36
|
when :metadata
|
37
|
-
#
|
38
|
-
|
37
|
+
fail "File '#{target}' does not exist, aborting" if not File.exists?(target)
|
38
|
+
t = Puppetfiler::Metadata.new(File.new(target))
|
39
39
|
else fail "Unkown type: #{type}"
|
40
40
|
end
|
41
41
|
|
42
|
-
# TODO the updates should be collected asynchronously to
|
43
|
-
# speed up the process
|
44
42
|
return t.updates
|
45
43
|
end
|
46
44
|
|
data/lib/puppetfiler/cli.rb
CHANGED
@@ -2,6 +2,7 @@ require 'thor'
|
|
2
2
|
require 'yaml'
|
3
3
|
require 'puppetfiler/puppetfile'
|
4
4
|
require 'puppetfiler/version'
|
5
|
+
require 'semantic_puppet'
|
5
6
|
|
6
7
|
module SemanticPuppet
|
7
8
|
class Version < Numeric
|
@@ -11,6 +12,14 @@ module SemanticPuppet
|
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
15
|
+
module SemanticPuppet
|
16
|
+
class VersionRange < Range
|
17
|
+
def length
|
18
|
+
to_s.length
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
14
23
|
module Puppetfiler
|
15
24
|
class CLI < Thor
|
16
25
|
class_option :puppetfile, {
|
data/lib/puppetfiler/metadata.rb
CHANGED
@@ -20,9 +20,38 @@ module Puppetfiler
|
|
20
20
|
@dependencies.eql?(other.dependencies)
|
21
21
|
end
|
22
22
|
|
23
|
+
def updates
|
24
|
+
require 'concurrent'
|
25
|
+
|
26
|
+
updates = {}
|
27
|
+
|
28
|
+
deps = @dependencies.map do |name, dep|
|
29
|
+
Concurrent::Future.execute do
|
30
|
+
latest = dep.latest
|
31
|
+
|
32
|
+
if not dep.range.cover?(latest)
|
33
|
+
updates[name] = {
|
34
|
+
:range => dep.range,
|
35
|
+
:newest => latest,
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
deps.each { |f| f.wait_or_cancel(300) }
|
42
|
+
|
43
|
+
return updates
|
44
|
+
end
|
45
|
+
|
23
46
|
private
|
24
47
|
def parse(target)
|
25
|
-
|
48
|
+
begin
|
49
|
+
json = JSON.load(target)
|
50
|
+
rescue JSON::ParserError => error
|
51
|
+
STDERR.puts 'Passed metadata is invalid:'
|
52
|
+
STDERR.puts error
|
53
|
+
return nil
|
54
|
+
end
|
26
55
|
|
27
56
|
if not json.has_key?('dependencies') or json['dependencies'].eql?([])
|
28
57
|
warn 'No dependencies found'
|
data/lib/puppetfiler/mod.rb
CHANGED
@@ -16,7 +16,7 @@ module Puppetfiler
|
|
16
16
|
@name = args[:name]
|
17
17
|
@slug = @name.gsub('/', '-')
|
18
18
|
|
19
|
-
@forge =
|
19
|
+
@forge = nil
|
20
20
|
|
21
21
|
@range = nil
|
22
22
|
%i{range version_requirement}.each do |v|
|
@@ -36,6 +36,10 @@ module Puppetfiler
|
|
36
36
|
@version = latest_valid if not @version
|
37
37
|
end
|
38
38
|
|
39
|
+
def forge
|
40
|
+
return @forge ||= PuppetForge::Module.find(@slug)
|
41
|
+
end
|
42
|
+
|
39
43
|
def eql?(other)
|
40
44
|
return false if not @name.eql?(other.name)
|
41
45
|
|
@@ -58,7 +62,7 @@ module Puppetfiler
|
|
58
62
|
end
|
59
63
|
|
60
64
|
def latest
|
61
|
-
return SemanticPuppet::Version.parse(
|
65
|
+
return SemanticPuppet::Version.parse(forge.current_release.version)
|
62
66
|
end
|
63
67
|
|
64
68
|
def valid_versions
|
@@ -66,7 +70,7 @@ module Puppetfiler
|
|
66
70
|
|
67
71
|
versions = []
|
68
72
|
|
69
|
-
|
73
|
+
forge.releases.each do |release|
|
70
74
|
version = SemanticPuppet::Version.parse(release.version)
|
71
75
|
versions << version if @range.cover?(version)
|
72
76
|
end
|
@@ -33,20 +33,28 @@ module Puppetfiler
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def updates
|
36
|
-
|
36
|
+
require 'concurrent'
|
37
37
|
|
38
|
-
|
39
|
-
current = mod.version
|
40
|
-
newest = mod.latest
|
38
|
+
updates = {}
|
41
39
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
mods = @modules.map do |name, mod|
|
41
|
+
Concurrent::Future.execute do
|
42
|
+
current = mod.version
|
43
|
+
newest = mod.latest
|
44
|
+
|
45
|
+
if not newest.eql?(current)
|
46
|
+
updates[name] = {
|
47
|
+
:current => current,
|
48
|
+
:newest => newest,
|
49
|
+
}
|
50
|
+
end
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
54
|
+
# A timeout of 300 seconds per job should be plenty
|
55
|
+
# TODO configurable timeout
|
56
|
+
mods.each { |f| f.wait_or_cancel(300) }
|
57
|
+
|
50
58
|
return updates
|
51
59
|
end
|
52
60
|
|
data/lib/puppetfiler/version.rb
CHANGED
data/puppetfiler.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppetfiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nelo-T. Wallus
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -192,6 +192,20 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '3.5'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: concurrent-ruby
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '1.0'
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '1.0'
|
195
209
|
description:
|
196
210
|
email:
|
197
211
|
- nelo@wallus.de
|
@@ -215,6 +229,7 @@ files:
|
|
215
229
|
- data/empty_puppetfile.rb
|
216
230
|
- data/metadata_emptydeps.json
|
217
231
|
- data/metadata_nodeps.json
|
232
|
+
- data/metadata_outdated.json
|
218
233
|
- data/simple_metadata.json
|
219
234
|
- data/simple_puppetfile.rb
|
220
235
|
- exe/puppetfiler
|