aemcrxpkgmgr 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6df29d5e01ce84d293a554ab1de18069c2aa454f
4
- data.tar.gz: a2051abe1ddc48dfe154a2fd140b607e0f79dd83
2
+ SHA256:
3
+ metadata.gz: a24f0915b9577e735d320619e2d23162465df08c79036d0404f04e334da152c0
4
+ data.tar.gz: 393a36ccdb60bcb7131523e86a746c3aa99c448647ed6fa68cc26cbc6907ca76
5
5
  SHA512:
6
- metadata.gz: 854c1522b431d8aed94745bb6c49b0cfd0be41c779ba85927a02348812f1c7c956b17f32cfdd5a91e51b33bd79fe01e87a69e0703756d46c2425ea6002647be5
7
- data.tar.gz: f6b710fd04ed7f218a16d63045c2939818af943ab4dd1a26b114361765e9a5990e84dd63dab6f462b49d88eecd984954685e80610f4a943d3fcc6bb002138133
6
+ metadata.gz: 439e17bfb6d3af0e74d0c624e3233c91e85894d715509197ef241e6f6774a793cf43d99682db8984f2acea9c6c1efdab47edadbdaa977819b5243260ce7e772f
7
+ data.tar.gz: 0e2af1b759fbbcfcfc37f8fe41a25d5b4d3c3fe132e3ba2eac89b2890845795df73659a0b252b28a64efaf853f5127fbf79d1fbe4bb9ae8155519a205e11d20b
data/.gitignore CHANGED
@@ -10,3 +10,8 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+
14
+ .idea/
15
+
16
+ # rbenv file
17
+ .ruby-version
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.4.2
5
- before_install: gem install bundler -v 1.16.0
4
+ - 2.4.5
5
+ before_install: gem install bundler -v 2.0
data/Gemfile.lock CHANGED
@@ -1,35 +1,35 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aemcrxpkgmgr (0.1.1)
4
+ aemcrxpkgmgr (0.2.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  diff-lcs (1.3)
10
- rake (10.5.0)
11
- rspec (3.7.0)
12
- rspec-core (~> 3.7.0)
13
- rspec-expectations (~> 3.7.0)
14
- rspec-mocks (~> 3.7.0)
15
- rspec-core (3.7.1)
16
- rspec-support (~> 3.7.0)
17
- rspec-expectations (3.7.0)
10
+ rake (13.0.1)
11
+ rspec (3.8.0)
12
+ rspec-core (~> 3.8.0)
13
+ rspec-expectations (~> 3.8.0)
14
+ rspec-mocks (~> 3.8.0)
15
+ rspec-core (3.8.2)
16
+ rspec-support (~> 3.8.0)
17
+ rspec-expectations (3.8.4)
18
18
  diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.7.0)
20
- rspec-mocks (3.7.0)
19
+ rspec-support (~> 3.8.0)
20
+ rspec-mocks (3.8.1)
21
21
  diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.7.0)
23
- rspec-support (3.7.0)
22
+ rspec-support (~> 3.8.0)
23
+ rspec-support (3.8.2)
24
24
 
25
25
  PLATFORMS
26
26
  ruby
27
27
 
28
28
  DEPENDENCIES
29
29
  aemcrxpkgmgr!
30
- bundler (~> 1.16)
31
- rake (~> 10.0)
30
+ bundler (~> 2.0)
31
+ rake (~> 13.0)
32
32
  rspec (~> 3.0)
33
33
 
34
34
  BUNDLED WITH
35
- 1.16.1
35
+ 2.2.27
data/README.md CHANGED
@@ -26,10 +26,10 @@ TODO: Write usage instructions here
26
26
 
27
27
  ## Development
28
28
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
29
+ After checking out the repo, run `./bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `./bin/console` for an interactive prompt that will allow you to experiment.
30
30
 
31
31
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
32
 
33
33
  ## Contributing
34
34
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/aemcrxpkgmgr.
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/vrtdev/aemcrxpkgmgr.
data/aemcrxpkgmgr.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'aemcrxpkgmgr/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'aemcrxpkgmgr'
8
8
  spec.version = AemCrxPkgMgr::VERSION
9
- spec.authors = ['Stefan - Zipkid - Goethals']
10
- spec.email = ['stefan.goethals@vrt.be']
9
+ spec.authors = ['Stefan - Zipkid - Goethals', 'Wim Symons']
10
+ spec.email = ['stefan.goethals@vrt.be', 'wim.symons@vrt.be']
11
11
 
12
12
  spec.summary = 'AEM CRX Package Manager script'
13
13
  spec.description = 'AEM CRX Package Manager script'
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ['lib']
31
31
 
32
- spec.add_development_dependency 'bundler', '~> 1.16'
33
- spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'bundler', '~> 2.0'
33
+ spec.add_development_dependency 'rake', '~> 13.0'
34
34
  spec.add_development_dependency 'rspec', '~> 3.0'
35
35
  end
data/bin/setup CHANGED
@@ -3,6 +3,7 @@ set -euo pipefail
3
3
  IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
+ gem install bundler
6
7
  bundle install
7
8
 
8
9
  # Do any other automated setup that you need to do here
data/changelog.md CHANGED
@@ -5,6 +5,23 @@ Version format based on http://semver.org/
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.2.2] - 2022-09-28
9
+ ## Fixed
10
+ - `--debug` did not function properly, causing debug output to be printed on stdout by default, which breaks valid (json) output.
11
+
12
+ ## [0.2.1] - 2021-12-15
13
+ ## Fixed
14
+ - `filtergroup` and `filtername` paramters to pkg_query made optional. (the puppet fact does not pass them)
15
+
16
+ ## [0.2.0] - 2021-09-03
17
+ ## Added
18
+ - `--filtergroup` and `--filtername` options to provide extra filtering on queried packages as `--query` does not provide exact matches.
19
+
20
+ ## [0.1.2] - 2019-07-05
21
+ ## Changed
22
+ - immediately stop retries when the given address is not available
23
+ - added `max_retries` and `retry_timeout` options while keeping the current defaults
24
+
8
25
  ## [0.1.1] - 2018-01-30
9
26
  ## Added
10
27
  - retry failed get
@@ -12,13 +29,3 @@ Version format based on http://semver.org/
12
29
  ## [0.1.0] - 2018-01-30
13
30
  ## Added
14
31
  - First working version
15
-
16
- ## [0.0.0] - 2018-01-01
17
- ### Added
18
- - ...
19
-
20
- ### Changed
21
- - ...
22
-
23
- ### Removed
24
- - ...
data/exe/aemcrxpkgmgr CHANGED
@@ -23,9 +23,15 @@ def clidoc
23
23
  -p --pass:
24
24
  password
25
25
 
26
- -q --query
26
+ -q --query:
27
27
  query string
28
28
 
29
+ -g --filtergroup:
30
+ the exact package group name to filter on
31
+
32
+ -n --filtername:
33
+ the exact package name to filter on
34
+
29
35
  -v --versions:
30
36
  include other versions of package
31
37
 
@@ -41,7 +47,7 @@ def clidoc
41
47
  ruby: native Array/Hash output
42
48
 
43
49
  -d --debug:
44
- debug ....
50
+ enable debug output on stderr
45
51
 
46
52
  CLIDOC
47
53
  end
@@ -53,21 +59,25 @@ opts = GetoptLong.new(
53
59
  ['--user', '-u', GetoptLong::REQUIRED_ARGUMENT],
54
60
  ['--pass', '-p', GetoptLong::REQUIRED_ARGUMENT],
55
61
  ['--query', '-q', GetoptLong::REQUIRED_ARGUMENT],
62
+ ['--filtergroup', '-g', GetoptLong::OPTIONAL_ARGUMENT],
63
+ ['--filtername', '-n', GetoptLong::OPTIONAL_ARGUMENT],
56
64
  ['--versions', '-v', GetoptLong::NO_ARGUMENT],
57
65
  ['--keys', '-k', GetoptLong::REQUIRED_ARGUMENT],
58
66
  ['--output', '-o', GetoptLong::REQUIRED_ARGUMENT],
59
- ['--debug', '-d', GetoptLong::OPTIONAL_ARGUMENT]
67
+ ['--debug', '-d', GetoptLong::NO_ARGUMENT]
60
68
  )
61
69
 
62
70
  action = 'query'
63
71
  host = 'http://localhost:4502'
64
72
  user = 'admin'
65
73
  pass = ENV['AEM_PASSWORD']
66
- query = ''
74
+ query = nil
75
+ filtergroup = nil
76
+ filtername = nil
67
77
  includeversions = false
68
78
  keys_to_extract = %w[name description version group path]
69
79
  output = 'yaml'
70
- debug = 0
80
+ debug = false
71
81
 
72
82
  # rubocop:disable Metrics/BlockLength
73
83
  opts.each do |opt, arg|
@@ -85,6 +95,10 @@ opts.each do |opt, arg|
85
95
  pass = arg
86
96
  when '--query'
87
97
  query = arg
98
+ when '--filtergroup'
99
+ filtergroup = arg
100
+ when '--filtername'
101
+ filtername = arg
88
102
  when '--versions'
89
103
  includeversions = true
90
104
  when '--keys'
@@ -92,11 +106,10 @@ opts.each do |opt, arg|
92
106
  when '--output'
93
107
  output = arg
94
108
  when '--debug'
95
- debug = if arg == ''
96
- 1
97
- else
98
- arg.to_i
99
- end
109
+ debug = true
110
+ else
111
+ STDERR.puts "Unknown option #{opt}"
112
+ exit 1
100
113
  end
101
114
  end
102
115
  # rubocop:enable Metrics/BlockLength
@@ -115,10 +128,10 @@ case action
115
128
  when 'delete_crx_zip'
116
129
  aemcrxpkgmgr.output = 'ruby'
117
130
  aemcrxpkgmgr.keys_to_extract = ['path']
118
- list = aemcrxpkgmgr.pkg_query query
119
- result = aemcrxpkgmgr.delete_crx_zip list
131
+ list = aemcrxpkgmgr.pkg_query(query, filtergroup, filtername)
132
+ result = aemcrxpkgmgr.delete_crx_zip(list)
120
133
  else
121
- result = aemcrxpkgmgr.pkg_query query
134
+ result = aemcrxpkgmgr.pkg_query(query, filtergroup, filtername)
122
135
  end
123
136
 
124
137
  puts result
@@ -1,3 +1,3 @@
1
1
  class AemCrxPkgMgr
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
data/lib/aemcrxpkgmgr.rb CHANGED
@@ -9,19 +9,22 @@ require 'pp'
9
9
  # AEM CRX Package Manager
10
10
  class AemCrxPkgMgr
11
11
  attr_accessor :includeversions, :keys_to_extract, :output
12
+
12
13
  def initialize(options = {})
13
14
  @host = options[:host] || 'http://localhost:4502'
14
15
  @user = options[:user] || 'admin'
16
+ @max_retries = options[:max_retries] || 100
17
+ @retry_timeout = options[:retry_timeout] || 3
15
18
  @pass = options[:pass]
16
19
  @includeversions = options[:includeversions] || false
17
20
  @keys_to_extract = options[:keys_to_extract]
18
21
  @output = options[:output] || 'ruby'
19
- @debug = options[:debug]
22
+ @debug = options[:debug] || false
23
+ STDERR.puts 'AemCrxPkgMgr Object initialised' if @debug
20
24
  end
21
25
 
22
26
  def get(uri)
23
- retries ||= 100
24
- retry_timeout = 3
27
+ retries ||= @max_retries
25
28
 
26
29
  request = Net::HTTP::Get.new(uri)
27
30
  request.basic_auth(@user, @pass)
@@ -30,26 +33,35 @@ class AemCrxPkgMgr
30
33
  http.request(request)
31
34
  end
32
35
  raise "AemCrxPkgMgr.get Response '#{response.code}' is not a Net::HTTPSuccess" unless response.is_a?(Net::HTTPSuccess)
36
+
33
37
  response
34
- rescue Errno::EADDRNOTAVAIL, RuntimeError => e
35
- puts "AemCrxPkgMgr.get : #{e.class} : #{e.message}"
38
+ rescue Errno::EADDRNOTAVAIL
39
+ raise 'AemCrxPkgMgr.get AEM not available'
40
+ rescue RuntimeError => e
41
+ STDERR.puts "AemCrxPkgMgr.get : #{e.class} : #{e.message}"
36
42
  will_retry = (retries -= 1) >= 0
37
43
  if will_retry
38
- sleep retry_timeout
44
+ sleep @retry_timeout
39
45
  retry
40
46
  end
41
47
  raise
42
48
  end
43
49
 
44
50
  def pkg_query_uri(query)
51
+ STDERR.puts "pkg_query_uri Starting (#{query})" if @debug
45
52
  uri = URI.parse(@host + '/crx/packmgr/list.jsp')
46
- params = { q: query, includeVersions: @includeversions }
53
+ params = { includeVersions: @includeversions }
54
+ unless query.nil?
55
+ params['q'] = query
56
+ end
47
57
  uri.query = URI.encode_www_form(params)
58
+ STDERR.puts "pkg_query_uri : discovered uri : #{uri}" if @debug
48
59
  uri
49
60
  end
50
61
 
51
62
  def delete_crx_zip(list)
52
63
  return unless list
64
+
53
65
  @delete_crx_zip_ok = 0
54
66
  @delete_crx_zip_status = []
55
67
  list.each do |path|
@@ -74,21 +86,36 @@ class AemCrxPkgMgr
74
86
  @delete_crx_zip_ok += 1 if response.is_a? Net::HTTPSuccess
75
87
  end
76
88
 
77
- def pkg_query(query)
89
+ def pkg_query(query, filtergroup=nil, filtername=nil)
90
+ STDERR.puts "pkg_query Starting (#{query}, #{filtergroup}, #{filtername})" if @debug
78
91
  uri = pkg_query_uri(query)
79
92
  response = get uri
93
+ STDERR.puts 'pkg_query : got response' if @debug
80
94
 
81
95
  raise "HTTP response code : #{response.code}, message : #{response.message}" unless response.is_a? Net::HTTPSuccess
82
96
 
97
+ STDERR.puts "pkg_query : response.code : #{response.code}" if @debug
98
+
83
99
  @query_data = JSON.parse(response.body)['results']
84
100
 
101
+ unless filtergroup.nil?
102
+ @query_data = @query_data.select { |item| item['group'] == filtergroup }
103
+ end
104
+
105
+ unless filtername.nil?
106
+ @query_data = @query_data.select { |item| item['name'] == filtername }
107
+ end
108
+
85
109
  extract_keys
86
110
 
87
111
  format_output @query_data unless @query_data.empty?
88
112
  end
89
113
 
90
114
  def extract_keys
115
+ STDERR.puts 'extract_keys : Starting' if @debug
91
116
  return if @keys_to_extract.length.zero?
117
+
118
+ STDERR.puts "extract_keys : keys_to_extract : #{@keys_to_extract}" if @debug
92
119
  @query_data.map! do |element|
93
120
  if @keys_to_extract.length == 1
94
121
  element[@keys_to_extract.first]
@@ -111,6 +138,7 @@ class AemCrxPkgMgr
111
138
 
112
139
  def output_single(data)
113
140
  raise 'Resultset contains more than 1 element and "single" was requested.' if data.length != 1
141
+
114
142
  data.first
115
143
  end
116
144
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aemcrxpkgmgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan - Zipkid - Goethals
8
- autorequire:
8
+ - Wim Symons
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2018-02-08 00:00:00.000000000 Z
12
+ date: 2024-01-03 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -16,28 +17,28 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '1.16'
20
+ version: '2.0'
20
21
  type: :development
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: '1.16'
27
+ version: '2.0'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: rake
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: '10.0'
34
+ version: '13.0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: '10.0'
41
+ version: '13.0'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rspec
43
44
  requirement: !ruby/object:Gem::Requirement
@@ -55,6 +56,7 @@ dependencies:
55
56
  description: AEM CRX Package Manager script
56
57
  email:
57
58
  - stefan.goethals@vrt.be
59
+ - wim.symons@vrt.be
58
60
  executables:
59
61
  - aemcrxpkgmgr
60
62
  extensions: []
@@ -79,7 +81,7 @@ homepage: http://github.com/vrtdev
79
81
  licenses: []
80
82
  metadata:
81
83
  allowed_push_host: https://rubygems.org
82
- post_install_message:
84
+ post_install_message:
83
85
  rdoc_options: []
84
86
  require_paths:
85
87
  - lib
@@ -94,9 +96,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
96
  - !ruby/object:Gem::Version
95
97
  version: '0'
96
98
  requirements: []
97
- rubyforge_project:
98
- rubygems_version: 2.6.13
99
- signing_key:
99
+ rubygems_version: 3.4.21
100
+ signing_key:
100
101
  specification_version: 4
101
102
  summary: AEM CRX Package Manager script
102
103
  test_files: []