aemcrxpkgmgr 0.1.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 25e42cf987c2c0d2c02946a69e39c571f9b4f489
4
- data.tar.gz: e85f1b2e45e9fc2862755bcc6a7f60dadee353a2
2
+ SHA256:
3
+ metadata.gz: a24f0915b9577e735d320619e2d23162465df08c79036d0404f04e334da152c0
4
+ data.tar.gz: 393a36ccdb60bcb7131523e86a746c3aa99c448647ed6fa68cc26cbc6907ca76
5
5
  SHA512:
6
- metadata.gz: e080da8e6823ebdf995bfe49798c90b9fb6cbcd819ef1c892aa1f51b63afb9bc797bd33ab6d491232414e053866848f46b1a94c827295840b4137363503a2064
7
- data.tar.gz: aeab3ca6291b0f7174b7419235c7703c256ab9f0f0703184b8727163b472c62d481f2757108be3063f832f9dbfa65de9f66f516c1ed438dd6340438b33f7022e
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.0)
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,16 +5,27 @@ Version format based on http://semver.org/
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
- ## [0.1.0] - 2018-01-30
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
9
17
  ## Added
10
- - First working version
18
+ - `--filtergroup` and `--filtername` options to provide extra filtering on queried packages as `--query` does not provide exact matches.
11
19
 
12
- ## [0.0.0] - 2018-01-01
13
- ### Added
14
- - ...
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
15
24
 
16
- ### Changed
17
- - ...
25
+ ## [0.1.1] - 2018-01-30
26
+ ## Added
27
+ - retry failed get
18
28
 
19
- ### Removed
20
- - ...
29
+ ## [0.1.0] - 2018-01-30
30
+ ## Added
31
+ - First working version
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.0'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
data/lib/aemcrxpkgmgr.rb CHANGED
@@ -9,35 +9,59 @@ 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)
27
+ retries ||= @max_retries
28
+
23
29
  request = Net::HTTP::Get.new(uri)
24
30
  request.basic_auth(@user, @pass)
25
31
 
26
32
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
27
33
  http.request(request)
28
34
  end
35
+ raise "AemCrxPkgMgr.get Response '#{response.code}' is not a Net::HTTPSuccess" unless response.is_a?(Net::HTTPSuccess)
36
+
29
37
  response
38
+ rescue Errno::EADDRNOTAVAIL
39
+ raise 'AemCrxPkgMgr.get AEM not available'
40
+ rescue RuntimeError => e
41
+ STDERR.puts "AemCrxPkgMgr.get : #{e.class} : #{e.message}"
42
+ will_retry = (retries -= 1) >= 0
43
+ if will_retry
44
+ sleep @retry_timeout
45
+ retry
46
+ end
47
+ raise
30
48
  end
31
49
 
32
50
  def pkg_query_uri(query)
51
+ STDERR.puts "pkg_query_uri Starting (#{query})" if @debug
33
52
  uri = URI.parse(@host + '/crx/packmgr/list.jsp')
34
- params = { q: query, includeVersions: @includeversions }
53
+ params = { includeVersions: @includeversions }
54
+ unless query.nil?
55
+ params['q'] = query
56
+ end
35
57
  uri.query = URI.encode_www_form(params)
58
+ STDERR.puts "pkg_query_uri : discovered uri : #{uri}" if @debug
36
59
  uri
37
60
  end
38
61
 
39
62
  def delete_crx_zip(list)
40
63
  return unless list
64
+
41
65
  @delete_crx_zip_ok = 0
42
66
  @delete_crx_zip_status = []
43
67
  list.each do |path|
@@ -62,21 +86,36 @@ class AemCrxPkgMgr
62
86
  @delete_crx_zip_ok += 1 if response.is_a? Net::HTTPSuccess
63
87
  end
64
88
 
65
- def pkg_query(query)
89
+ def pkg_query(query, filtergroup=nil, filtername=nil)
90
+ STDERR.puts "pkg_query Starting (#{query}, #{filtergroup}, #{filtername})" if @debug
66
91
  uri = pkg_query_uri(query)
67
92
  response = get uri
93
+ STDERR.puts 'pkg_query : got response' if @debug
68
94
 
69
95
  raise "HTTP response code : #{response.code}, message : #{response.message}" unless response.is_a? Net::HTTPSuccess
70
96
 
97
+ STDERR.puts "pkg_query : response.code : #{response.code}" if @debug
98
+
71
99
  @query_data = JSON.parse(response.body)['results']
72
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
+
73
109
  extract_keys
74
110
 
75
111
  format_output @query_data unless @query_data.empty?
76
112
  end
77
113
 
78
114
  def extract_keys
115
+ STDERR.puts 'extract_keys : Starting' if @debug
79
116
  return if @keys_to_extract.length.zero?
117
+
118
+ STDERR.puts "extract_keys : keys_to_extract : #{@keys_to_extract}" if @debug
80
119
  @query_data.map! do |element|
81
120
  if @keys_to_extract.length == 1
82
121
  element[@keys_to_extract.first]
@@ -99,6 +138,7 @@ class AemCrxPkgMgr
99
138
 
100
139
  def output_single(data)
101
140
  raise 'Resultset contains more than 1 element and "single" was requested.' if data.length != 1
141
+
102
142
  data.first
103
143
  end
104
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.0
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-01-30 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: []