puppetfiler 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|