metadata_json_deps 0.1.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aad36d083ab748b459c19147bfb54634e0ecda3cf515613324b5f52ac8c4e38c
4
- data.tar.gz: 27ea83a79f0eba6c97da1f34262121a2999b31902b7e937ed1980430a7a1bc59
3
+ metadata.gz: 2bcbe32a5563efc72e3d20dca1bde1f7b6fd04daed604ac244b1b7b3a5248c0f
4
+ data.tar.gz: fdae66bfdaebacb7e019ccb762b63c85bce412f2b5b24e45319a241bd7321b35
5
5
  SHA512:
6
- metadata.gz: 5e64aee7f01a1e0ad65094162d4c0931b100211f466c69b12ef2a352e14af9bab3cb164c7d6aa0061bb0d112c889cf9a2d6b0bb0fa4fc72ffc788081f1c7adec
7
- data.tar.gz: 2425a29efaf143c10e8a573d038319fa1a2888096f94daa378581222c135479998dffcfe53a120c8012aa0c4c5f936d08cc69cf7d8435be64424a9e683f59ead
6
+ metadata.gz: 69e42cca04c2f04382d09f3e387684624395e5ebace94842fe721ae56fbdfc13a8609e8b82ccfc9388fbc7d1da8d218808a3ff760b5ddcc7c64bb088b55790f2
7
+ data.tar.gz: 0f354fcca5932a92401c14615de0a8b62bfdd91008719cb5e53bb64a8cf0a6b063244d77dfce02de39210558e42e2abc0ea8d30bfaddcf6d90a25520e1d9ec04
data/README.md CHANGED
@@ -4,7 +4,7 @@ The metadata-json-deps tool validates dependencies in `metadata.json` files in P
4
4
 
5
5
  ## Compatibility
6
6
 
7
- metadata-json-deps is compatible with Ruby versions 2.0.0 and newer.
7
+ metadata-json-deps is compatible with Ruby versions 2.4.0 and newer.
8
8
 
9
9
  ## Installation
10
10
 
@@ -44,6 +44,6 @@ require 'metadata_json_deps'
44
44
  desc 'Run metadata-json-deps'
45
45
  task :metadata_deps do
46
46
  files = FileList['modules/*/metadata.json']
47
- MetadataJsonDeps::Runner.run(files)
47
+ MetadataJsonDeps::run(files)
48
48
  end
49
49
  ```
@@ -10,4 +10,4 @@ OptionParser.new do |opts|
10
10
  end
11
11
  end.parse!
12
12
 
13
- MetadataJsonDeps::Runner.run(ARGV, options[:verbose])
13
+ MetadataJsonDeps.run(ARGV, options[:verbose])
@@ -1,5 +1,37 @@
1
+ require 'puppet_forge'
2
+ require 'puppet_metadata'
3
+
1
4
  module MetadataJsonDeps
2
- autoload :ForgeVersions, 'metadata_json_deps/forge_versions'
3
- autoload :MetadataChecker, 'metadata_json_deps/metadata_checker'
4
- autoload :Runner, 'metadata_json_deps/runner'
5
+ class ForgeVersions
6
+ def initialize(cache = {})
7
+ @cache = cache
8
+ end
9
+
10
+ def get_current_version(name)
11
+ name = name.sub('/', '-')
12
+ @cache[name] ||= PuppetForge::Module.find(name).current_release.version
13
+ end
14
+ end
15
+
16
+ def self.run(filenames, verbose = false)
17
+ forge = ForgeVersions.new
18
+
19
+ filenames.each do |filename|
20
+ puts "Checking #{filename}"
21
+ metadata = PuppetMetadata.read(filename)
22
+
23
+ metadata.dependencies.map do |dependency, constraint|
24
+ current = forge.get_current_version(dependency)
25
+
26
+ if metadata.satisfies_dependency?(dependency, current)
27
+ if verbose
28
+ puts " #{dependency} (#{constraint}) matches #{current}"
29
+ end
30
+ else
31
+ puts " #{dependency} (#{constraint}) doesn't match #{current}"
32
+ end
33
+ end
34
+ end
35
+ rescue Interrupt
36
+ end
5
37
  end
metadata CHANGED
@@ -1,43 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_json_deps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ewoud Kohl van Wijngaarden
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-27 00:00:00.000000000 Z
11
+ date: 2021-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet_forge
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '4'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '2.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '4'
27
33
  - !ruby/object:Gem::Dependency
28
- name: semantic_puppet
34
+ name: puppet_metadata
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '1.0'
39
+ version: 0.3.0
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '1.0'
46
+ version: 0.3.0
41
47
  description: Verify all your dependencies allow the latest versions on Puppet Forge
42
48
  email: ewoud+rubygems@kohlvanwijngaarden.nl
43
49
  executables:
@@ -49,15 +55,12 @@ files:
49
55
  - README.md
50
56
  - bin/metadata-json-deps
51
57
  - lib/metadata_json_deps.rb
52
- - lib/metadata_json_deps/forge_versions.rb
53
- - lib/metadata_json_deps/metadata_checker.rb
54
- - lib/metadata_json_deps/runner.rb
55
58
  homepage: https://github.com/ekohl/metadata_json_deps
56
59
  licenses:
57
60
  - MIT
58
61
  metadata:
59
62
  source_code_uri: https://github.com/ekohl/metadata_json_deps
60
- post_install_message:
63
+ post_install_message:
61
64
  rdoc_options: []
62
65
  require_paths:
63
66
  - lib
@@ -65,16 +68,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
68
  requirements:
66
69
  - - ">="
67
70
  - !ruby/object:Gem::Version
68
- version: 2.0.0
71
+ version: 2.4.0
69
72
  required_rubygems_version: !ruby/object:Gem::Requirement
70
73
  requirements:
71
74
  - - ">="
72
75
  - !ruby/object:Gem::Version
73
76
  version: '0'
74
77
  requirements: []
75
- rubyforge_project:
76
- rubygems_version: 2.7.6
77
- signing_key:
78
+ rubygems_version: 3.2.22
79
+ signing_key:
78
80
  specification_version: 4
79
81
  summary: Check your Puppet metadata dependencies
80
82
  test_files: []
@@ -1,31 +0,0 @@
1
- require 'puppet_forge'
2
- require 'semantic_puppet'
3
-
4
- module MetadataJsonDeps
5
- class ForgeVersions
6
- def initialize(cache = {})
7
- @cache = cache
8
- end
9
-
10
- def get_current_version(name)
11
- name = name.sub('/', '-')
12
- version = @cache[name]
13
-
14
- unless version
15
- @cache[name] = version = get_version(get_mod(name))
16
- end
17
-
18
- version
19
- end
20
-
21
- private
22
-
23
- def get_mod(name)
24
- PuppetForge::Module.find(name)
25
- end
26
-
27
- def get_version(mod)
28
- SemanticPuppet::Version.parse(mod.current_release.version)
29
- end
30
- end
31
- end
@@ -1,26 +0,0 @@
1
- require 'semantic_puppet'
2
-
3
- module MetadataJsonDeps
4
- class MetadataChecker
5
- def initialize(metadata, forge)
6
- @metadata = metadata
7
- @forge = forge
8
- end
9
-
10
- def module_dependencies
11
- return [] unless @metadata['dependencies']
12
-
13
- @metadata['dependencies'].map do |dep|
14
- constraint = dep['version_requirement'] || '>= 0'
15
- [dep['name'], SemanticPuppet::VersionRange.parse(constraint)]
16
- end
17
- end
18
-
19
- def dependencies
20
- module_dependencies.map do |dependency, constraint|
21
- current = @forge.get_current_version(dependency)
22
- [dependency, constraint, current, constraint.include?(current)]
23
- end
24
- end
25
- end
26
- end
@@ -1,32 +0,0 @@
1
- require 'json'
2
-
3
- module MetadataJsonDeps
4
- class Runner
5
- def initialize(filenames, verbose)
6
- @filenames = filenames
7
- @verbose = verbose
8
- @forge = MetadataJsonDeps::ForgeVersions.new
9
- end
10
-
11
- def run
12
- @filenames.each do |filename|
13
- puts "Checking #{filename}"
14
- checker = MetadataJsonDeps::MetadataChecker.new(JSON.parse(File.read(filename)), @forge)
15
- checker.dependencies.each do |dependency, constraint, current, satisfied|
16
- if satisfied
17
- if @verbose
18
- puts " #{dependency} (#{constraint}) matches #{current}"
19
- end
20
- else
21
- puts " #{dependency} (#{constraint}) doesn't match #{current}"
22
- end
23
- end
24
- end
25
- rescue Interrupt
26
- end
27
-
28
- def self.run(filenames, verbose = false)
29
- self.new(filenames, verbose).run
30
- end
31
- end
32
- end