aemcrxpkgmgr 0.1.1 → 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: 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: []