getv 2.1.2 → 2.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: 4a93d786b9109d9f99361e2e5fbda52af315ee2945d1d286910a2f26afcf4426
4
- data.tar.gz: d39c715cf2a38fee4a326d577bf238ae44399078ef562d1f585945bc012377b2
3
+ metadata.gz: a61689e83e79890fe34ef8a54fb004fce2ba6afc46f461f15345b0aa5a521e02
4
+ data.tar.gz: 5b85ec535bf555d416fe406b6438f8455c672d87ba76a3a39dfa8bffd113a8b7
5
5
  SHA512:
6
- metadata.gz: 0bbd5cfeff4a45f151a77dcfe7660cf4a333852419b68df6f4b21d5acef4dd8cb4facd48a34b1e5eaff35905f62c10a9378c6d5afadcbc9eb17d42edfb435bfa
7
- data.tar.gz: 71a67c7993e38745ea78880b68abffe0284c6260357585d55b887c11d53be23b805739b15da2a91d520fa53161f8e938e645a15fbef1acacafa988e07a5f2928
6
+ metadata.gz: f5a88e66bc7a8d8a3c9ab49fed1ac6b19c1477bf3b50a18beeb7a4ccbcab7cecffe43b07ab761f62d661d6c411e6060718979bbb1525e7c6d3fb1f5117cecb7b
7
+ data.tar.gz: 31859e428d224cf9e1cb5741873cbaed2f46653dbc247d582df106fa06284ab3c20f7c97c0ceff9f52e63dba0f960cbf41cd453f3c7ed68fa39314a5aa83f70e
data/README.md CHANGED
@@ -39,7 +39,7 @@ SYNOPSIS
39
39
 
40
40
 
41
41
  VERSION
42
- 2.1.2
42
+ 2.1.4
43
43
 
44
44
 
45
45
 
@@ -72,7 +72,7 @@ Show the latest available version of the `getv` gem:
72
72
 
73
73
  ```console
74
74
  $ getv --latest gem getv
75
- 2.1.2
75
+ 2.1.4
76
76
  ```
77
77
 
78
78
  Show all `dep` GitHub release versions in JSON:
@@ -21,7 +21,7 @@ module Getv
21
21
  { owner: name.split('/')[0], repo: name.split('/')[1],
22
22
  url: 'https://registry.hub.docker.com' }
23
23
  else
24
- { owner: name.split('/')[1], repo: name.split('/')[2..-1].join('/'),
24
+ { owner: name.split('/')[1], repo: name.split('/')[2..].join('/'),
25
25
  url: "https://#{name.split('/')[0]}" }
26
26
  end
27
27
  end
@@ -36,15 +36,20 @@ module Getv
36
36
  d_opts
37
37
  end
38
38
 
39
- def retrieve_versions
39
+ def retrieve_versions # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
40
40
  require 'docker_registry2'
41
41
  retries ||= 0
42
42
  docker = DockerRegistry2.connect(opts[:url], docker_opts)
43
43
  docker.tags("#{opts[:owner]}/#{opts[:repo]}")['tags'] || []
44
44
  rescue DockerRegistry2::NotFound
45
45
  []
46
- rescue StandardError
47
- retry if (retries += 1) < 4
46
+ rescue StandardError => e
47
+ if (retries += 1) < 4
48
+ retry
49
+ else
50
+ puts "Error fetching tags for docker image #{opts[:url]}/#{opts[:owner]}/#{opts[:repo]}:"
51
+ puts e.message
52
+ end
48
53
  end
49
54
  end
50
55
  end
data/lib/getv/package.rb CHANGED
@@ -42,12 +42,13 @@ module Getv
42
42
  @opts = opts
43
43
  end
44
44
 
45
- def defaults
45
+ def defaults # rubocop:disable Metrics/MethodLength
46
46
  {
47
47
  select_search: '^\s*v?(.*)\s*$',
48
48
  select_replace: '\1',
49
49
  reject: nil,
50
50
  semantic_only: true,
51
+ semantic_prefix: nil,
51
52
  semantic_select: ['*'],
52
53
  proxy: nil,
53
54
  versions: nil,
@@ -66,20 +67,28 @@ module Getv
66
67
  end
67
68
 
68
69
  def update_versions # rubocop:disable Metrics/PerceivedComplexity,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/AbcSize
69
- versions = retrieve_versions
70
+ versions = retrieve_versions || []
70
71
  versions.sort! if instance_of?(Getv::Package::GitHub::Commit)
71
72
  select_pattern = Regexp.new(opts[:select_search])
72
73
  versions.select! { |v| v =~ select_pattern }
73
74
  versions.map! { |v| v.sub(select_pattern, opts[:select_replace]) }
74
75
  versions.reject! { |v| v =~ Regexp.new(opts[:reject]) } unless opts[:reject].nil?
76
+
75
77
  if opts[:semantic_only]
76
78
  require 'semantic'
77
79
  require 'semantic/core_ext'
78
- versions.select!(&:is_version?)
80
+
81
+ # remove non semantic version tags
82
+ versions.select! do |v|
83
+ v.sub(/^#{opts[:semantic_prefix]}/, '').is_version? && v.start_with?(opts[:semantic_prefix].to_s)
84
+ end
85
+
79
86
  opts[:semantic_select].each do |comparator|
80
- versions.select! { |v| Semantic::Version.new(v).satisfies?(comparator) }
87
+ versions.select! do |v|
88
+ Semantic::Version.new(v.sub(/^#{opts[:semantic_prefix]}/, '')).satisfies?(comparator)
89
+ end
81
90
  end
82
- versions.sort_by! { |v| Semantic::Version.new(v) }
91
+ versions.sort_by! { |v| Semantic::Version.new(v.sub(/^#{opts[:semantic_prefix]}/, '')) }
83
92
  else
84
93
  versions.sort! unless instance_of?(Getv::Package::GitHub::Commit)
85
94
  end
data/lib/getv/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Getv
4
- VERSION = '2.1.2'
4
+ VERSION = '2.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: getv
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - harbottle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-04 00:00:00.000000000 Z
11
+ date: 2022-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -36,7 +36,7 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 1.0.0
39
+ version: 1.10.1
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 2.0.0
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.0.0
49
+ version: 1.10.1
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: 2.0.0