PackageChanger 0.1.0 → 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 +5 -5
- data/.gitignore +1 -0
- data/PackageChanger-0.1.0.gem +0 -0
- data/PackageChanger.gemspec +26 -24
- data/README.md +2 -0
- data/bin/PackageChanger +79 -17
- data/bin/setup +3 -0
- data/lib/PackageChanger/config.rb +2 -3
- data/lib/PackageChanger/connection.rb +53 -18
- data/lib/PackageChanger/messages.rb +16 -5
- data/lib/PackageChanger/version.rb +1 -1
- metadata +20 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e42fcbfef88337d942d5dc3d91e33252959b753a3d15cbdf1581bd8eb14463be
|
4
|
+
data.tar.gz: 04504df89dac7433c272baaf28b8f4d409f31932bc06c2cb009daa647ff107b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfc931f07224a433d2ee321f47dee9b8d068670a312ecf709f4a8eb6ea3cc7ff27b541d6901f639e90793c3c1d3b4fd47c1cd7d5bb1047b6246a8ee2005a15ae
|
7
|
+
data.tar.gz: d550a5ebb9334978ea5608ccc02aadcdeb9503b09ba731a74e9eec7de3085b3ca33078c96928a623cfcf6e462c3b35e334ba9c5c906bf9102ee70ba0917b13fc
|
data/.gitignore
CHANGED
Binary file
|
data/PackageChanger.gemspec
CHANGED
@@ -1,44 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require 'PackageChanger/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'PackageChanger'
|
8
9
|
spec.version = PackageChanger::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
10
|
+
spec.authors = ['Bernardo Prieto']
|
11
|
+
spec.email = ['bernardo.prieto.curiel@zalando.de']
|
11
12
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
and gives the ability to replace the package in all these policies.
|
15
|
-
spec.homepage =
|
16
|
-
spec.license =
|
13
|
+
spec.summary = 'Uses the API to list or replace a package in all or one JSS policies in which it appears.'
|
14
|
+
spec.description = 'With the help or Ruby JSS, uses the API to list all or one the policies in which a package appears
|
15
|
+
and gives the ability to replace the package in all these policies.'
|
16
|
+
spec.homepage = 'https://github.com/Bearzooka/PackageChanger'
|
17
|
+
spec.license = 'MIT'
|
17
18
|
|
18
19
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
19
20
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
20
21
|
if spec.respond_to?(:metadata)
|
21
|
-
spec.metadata[
|
22
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
|
22
23
|
|
23
|
-
spec.metadata[
|
24
|
-
spec.metadata[
|
24
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
25
|
+
spec.metadata['source_code_uri'] = 'https://github.com/Bearzooka/PackageChanger'
|
25
26
|
else
|
26
|
-
raise
|
27
|
-
|
27
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
28
|
+
'public gem pushes.'
|
28
29
|
end
|
29
30
|
|
30
31
|
# Specify which files should be added to the gem when it is released.
|
31
32
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
32
|
-
spec.files
|
33
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
33
34
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
34
35
|
end
|
35
|
-
spec.bindir =
|
36
|
-
spec.executables
|
37
|
-
spec.
|
36
|
+
spec.bindir = 'bin'
|
37
|
+
spec.executables << 'PackageChanger'
|
38
|
+
# spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
39
|
+
spec.require_paths = ['lib']
|
38
40
|
|
39
|
-
spec.add_development_dependency
|
40
|
-
spec.add_development_dependency
|
41
|
-
spec.add_development_dependency
|
42
|
-
spec.add_development_dependency 'ruby-jss', '~> 1.0', '>= 1.
|
43
|
-
spec.add_runtime_dependency 'ruby-jss', '~> 1.0', '>= 1.
|
41
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
42
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
43
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
44
|
+
spec.add_development_dependency 'ruby-jss', '~> 1.0', '>= 1.2.3'
|
45
|
+
spec.add_runtime_dependency 'ruby-jss', '~> 1.0', '>= 1.2.3'
|
44
46
|
end
|
data/README.md
CHANGED
@@ -16,6 +16,8 @@ Once configured, you can use it:
|
|
16
16
|
|
17
17
|
```packagechanger [--silent] --old OldPackageName --new NewPackageName || --list ListedPackage```
|
18
18
|
|
19
|
+
Run the first execution with sudo, or change the mode of the file `/private/var/log/packagechanger.log` so all users can write to it.
|
20
|
+
|
19
21
|
|
20
22
|
## Contributing
|
21
23
|
|
data/bin/PackageChanger
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'getoptlong'
|
6
|
+
|
6
7
|
require_relative '../lib/PackageChanger/config'
|
7
8
|
require_relative '../lib/PackageChanger/connection'
|
8
9
|
require_relative '../lib/PackageChanger/messages'
|
@@ -11,22 +12,39 @@ require_relative '../lib/PackageChanger/log'
|
|
11
12
|
old_package = nil
|
12
13
|
new_package = nil
|
13
14
|
list_package = nil
|
15
|
+
target_policy = nil
|
14
16
|
mode = nil
|
15
17
|
result_array = []
|
16
18
|
silent = false
|
17
19
|
|
18
20
|
# The CLI options for GetoptLong
|
19
21
|
OPTS = GetoptLong.new(
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
['--policy', '-p', GetoptLong::REQUIRED_ARGUMENT],
|
23
|
+
['--old', '-o', GetoptLong::REQUIRED_ARGUMENT],
|
24
|
+
['--new', '-n', GetoptLong::REQUIRED_ARGUMENT],
|
25
|
+
['--list', '-l', GetoptLong::REQUIRED_ARGUMENT],
|
26
|
+
['--silent', '-s', GetoptLong::NO_ARGUMENT]
|
24
27
|
)
|
25
28
|
|
26
29
|
logger = PackageChanger::Log.new
|
27
30
|
|
31
|
+
# Default mode is change
|
32
|
+
mode = 'change'
|
33
|
+
|
28
34
|
OPTS.each do |opt, arg|
|
29
35
|
case opt
|
36
|
+
when '--policy'
|
37
|
+
if arg == ''
|
38
|
+
puts PackageChanger::USAGE
|
39
|
+
logger.write('Missing arguments.')
|
40
|
+
exit 1
|
41
|
+
else
|
42
|
+
target_policy = arg
|
43
|
+
|
44
|
+
# Change mode to single if policy flag is used
|
45
|
+
mode = 'single'
|
46
|
+
end
|
47
|
+
|
30
48
|
when '--old'
|
31
49
|
if arg == ''
|
32
50
|
puts PackageChanger::USAGE
|
@@ -34,7 +52,6 @@ OPTS.each do |opt, arg|
|
|
34
52
|
exit 1
|
35
53
|
else
|
36
54
|
old_package = arg
|
37
|
-
mode = 'change'
|
38
55
|
end
|
39
56
|
|
40
57
|
when '--new'
|
@@ -53,22 +70,24 @@ OPTS.each do |opt, arg|
|
|
53
70
|
exit 1
|
54
71
|
else
|
55
72
|
list_package = arg
|
56
|
-
|
73
|
+
|
74
|
+
# Change mode to list if flag is used
|
75
|
+
mode = 'list'
|
57
76
|
end
|
58
77
|
when '--silent'
|
59
|
-
|
78
|
+
silent = true
|
60
79
|
|
61
80
|
end
|
62
81
|
end
|
63
82
|
|
64
|
-
unless (old_package
|
83
|
+
unless (old_package && new_package) || list_package
|
65
84
|
puts PackageChanger::USAGE
|
66
85
|
logger.write('Missing package names')
|
67
86
|
exit 1
|
68
87
|
end
|
69
88
|
|
70
89
|
begin
|
71
|
-
|
90
|
+
puts PackageChanger::STARTUP unless silent
|
72
91
|
if PackageChanger::Configuration::DEFAULT_CONF_FILE.file?
|
73
92
|
@config_src = PackageChanger::Configuration::DEFAULT_CONF_FILE.to_s
|
74
93
|
elsif PackageChanger::Configuration::SAMPLE_CONF_FILE.file?
|
@@ -77,7 +96,7 @@ begin
|
|
77
96
|
exit 1
|
78
97
|
end
|
79
98
|
|
80
|
-
PackageChanger.connect_to_jss
|
99
|
+
PackageChanger.connect_to_jss(silent)
|
81
100
|
|
82
101
|
if mode == 'list'
|
83
102
|
unless JSS::Package.valid_id list_package
|
@@ -86,10 +105,10 @@ begin
|
|
86
105
|
exit 1
|
87
106
|
end
|
88
107
|
|
89
|
-
result_array = PackageChanger.get_policies_with(list_package, silent)
|
108
|
+
result_array = PackageChanger.get_policies_with(list_package, silent, logger)
|
90
109
|
|
91
110
|
if result_array.count > 0
|
92
|
-
puts "The package #{list_package} is used on the following policies: "
|
111
|
+
puts "\u{1F3C1} The package #{list_package} is used on the following policies: "
|
93
112
|
result_array.each do |result|
|
94
113
|
puts "\t#{result[:id]} - #{result[:name]}"
|
95
114
|
end
|
@@ -98,8 +117,8 @@ begin
|
|
98
117
|
exit 0
|
99
118
|
end
|
100
119
|
|
101
|
-
elsif mode ==
|
102
|
-
unless JSS::Package.valid_id
|
120
|
+
elsif mode == 'change'
|
121
|
+
unless JSS::Package.valid_id(old_package) && JSS::Package.valid_id(new_package)
|
103
122
|
logger.write("Either #{old_package} or #{new_package} do not exist")
|
104
123
|
puts PackageChanger::MISSSING_PACKAGE
|
105
124
|
exit 1
|
@@ -117,7 +136,7 @@ begin
|
|
117
136
|
|
118
137
|
confirmation = ''
|
119
138
|
|
120
|
-
while confirmation !~
|
139
|
+
while confirmation !~ /[yn]/i
|
121
140
|
puts 'Please confirm [y/n]:'
|
122
141
|
confirmation = gets.chomp.downcase
|
123
142
|
end
|
@@ -127,7 +146,7 @@ begin
|
|
127
146
|
puts 'Processing changes.' unless silent
|
128
147
|
logger.write('Starting changes.')
|
129
148
|
PackageChanger.replace_packages(result_array, old_package, new_package, silent, logger)
|
130
|
-
puts
|
149
|
+
puts "\u{1F3C1} Finished changing packages." unless silent
|
131
150
|
logger.write('Finished changing.')
|
132
151
|
exit 0
|
133
152
|
when 'n'
|
@@ -146,6 +165,49 @@ begin
|
|
146
165
|
exit 0
|
147
166
|
end
|
148
167
|
|
149
|
-
|
168
|
+
elsif mode == 'single'
|
169
|
+
unless JSS::Package.valid_id(old_package) && JSS::Package.valid_id(new_package)
|
170
|
+
logger.write("Either #{old_package} or #{new_package} does not exist")
|
171
|
+
puts PackageChanger::MISSSING_PACKAGE
|
172
|
+
exit 1
|
173
|
+
end
|
150
174
|
|
175
|
+
|
176
|
+
target_policy = target_policy.match(/[^[:digit:]]+/) ? target_policy : target_policy.to_i
|
177
|
+
unless JSS::Policy.valid_id(target_policy)
|
178
|
+
logger.write("The policy with id #{target_policy} does not exist.")
|
179
|
+
puts PackageChanger::MISSSING_POLICY
|
180
|
+
exit 1
|
181
|
+
end
|
182
|
+
|
183
|
+
changed_pol = JSS::Policy.fetch target_policy
|
184
|
+
|
185
|
+
puts "\u{1F4E6} The package #{old_package}\n\u{27A1 FE0F} will be replaced with #{new_package}\n\u{1F4CC} in #{changed_pol.name}"
|
186
|
+
logger.write("The package #{old_package} will be replaced with #{new_package} in #{changed_pol.name}")
|
187
|
+
|
188
|
+
confirmation = ''
|
189
|
+
|
190
|
+
while confirmation !~ /[yn]/i
|
191
|
+
puts 'Please confirm [y/n]:'
|
192
|
+
confirmation = gets.chomp.downcase
|
193
|
+
end
|
194
|
+
|
195
|
+
case confirmation
|
196
|
+
when 'y'
|
197
|
+
puts "\u{1F3A2} Processing changes." unless silent
|
198
|
+
logger.write('Starting changes.')
|
199
|
+
PackageChanger.replace_packages_in(changed_pol, old_package, new_package, silent, logger)
|
200
|
+
puts 'Finished changing packages.' unless silent
|
201
|
+
logger.write('Finished changing.')
|
202
|
+
exit 0
|
203
|
+
when 'n'
|
204
|
+
puts "\u{1F519} Cancelling changes."
|
205
|
+
logger.write('User cancelled.')
|
206
|
+
exit 0
|
207
|
+
else
|
208
|
+
puts PackageChanger::ERROR
|
209
|
+
logger.write(PackageChanger::ERROR)
|
210
|
+
exit 1
|
211
|
+
end
|
212
|
+
end
|
151
213
|
end
|
data/bin/setup
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
require 'singleton'
|
3
2
|
require 'pathname'
|
4
3
|
|
@@ -46,7 +45,7 @@ module PackageChanger
|
|
46
45
|
def read(file)
|
47
46
|
available_conf_keys = CONF_KEYS.keys
|
48
47
|
|
49
|
-
puts file
|
48
|
+
# puts file
|
50
49
|
Pathname.new(file).read.each_line do |line|
|
51
50
|
# skip blank lines and those starting with #
|
52
51
|
next if line =~ /^\s*(#|$)/
|
@@ -87,4 +86,4 @@ module PackageChanger
|
|
87
86
|
def self.config
|
88
87
|
PackageChanger::Configuration.instance
|
89
88
|
end
|
90
|
-
end # module
|
89
|
+
end # module
|
@@ -3,7 +3,7 @@ require_relative 'config'
|
|
3
3
|
|
4
4
|
module PackageChanger
|
5
5
|
|
6
|
-
def self.connect_to_jss
|
6
|
+
def self.connect_to_jss(silent)
|
7
7
|
# JSS Connection info
|
8
8
|
|
9
9
|
begin
|
@@ -12,9 +12,9 @@ module PackageChanger
|
|
12
12
|
server: PackageChanger.config.jamf_server,
|
13
13
|
verify_cert: false
|
14
14
|
|
15
|
-
puts
|
15
|
+
puts "\u{1F50C} Connected to the JSS." unless silent
|
16
16
|
rescue
|
17
|
-
puts
|
17
|
+
puts "\u{1F6AB} Could not connect to JSS. Please check the configuration."
|
18
18
|
# abort
|
19
19
|
end
|
20
20
|
end
|
@@ -37,27 +37,62 @@ module PackageChanger
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
def self.
|
40
|
+
def self.replace_packages_in(changed_pol, old_package, new_package, silent, logger)
|
41
|
+
puts 'Starting replacement process' unless silent
|
42
|
+
|
43
|
+
puts "Changing #{changed_pol.name}" unless silent
|
44
|
+
logger.write("Changing #{changed_pol.name}")
|
45
|
+
begin
|
46
|
+
changed_pol.remove_package(old_package)
|
47
|
+
changed_pol.add_package(new_package)
|
48
|
+
changed_pol.update
|
49
|
+
rescue StandardError => e
|
50
|
+
puts "\u{1F6AB} Changed failed due to error: #{e.message}"
|
51
|
+
logger.write("Changed on #{changed_pol.name} failed due to error: #{e.message}")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.get_policies_with(list_package, silent, logger)
|
41
56
|
result_array = []
|
42
57
|
all_policies = JSS::Policy.all.select { |p|
|
43
58
|
!(p[:name].include? '[SelfService]') &&
|
44
59
|
!(p[:name].include? '1 Computer')
|
45
60
|
}
|
46
|
-
puts "There are #{all_policies.count} policies in your JSS…"
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
61
|
+
puts "\u{203C FE0F} There are #{all_policies.count} policies in your JSS…"
|
62
|
+
|
63
|
+
confirmation = ''
|
64
|
+
|
65
|
+
while confirmation !~ /[yn]/i
|
66
|
+
puts 'Would you like to continue? [y/n]:'
|
67
|
+
confirmation = gets.chomp.downcase
|
68
|
+
end
|
69
|
+
|
70
|
+
case confirmation
|
71
|
+
when 'y'
|
72
|
+
pol_count = 1
|
73
|
+
all_policies.each do |policy|
|
74
|
+
puts "\r#{pol_count} policies checked" unless silent
|
75
|
+
one_result = {}
|
76
|
+
fetched_policy = JSS::Policy.fetch(:id => policy[:id])
|
77
|
+
if fetched_policy.packages.any? {|package| package[:name] == list_package}
|
78
|
+
one_result[:id] = fetched_policy.id
|
79
|
+
one_result[:name] = fetched_policy.name
|
80
|
+
result_array.push(one_result)
|
81
|
+
end
|
82
|
+
#end
|
83
|
+
pol_count += 1
|
56
84
|
end
|
57
|
-
|
58
|
-
|
85
|
+
return result_array
|
86
|
+
|
87
|
+
when 'n'
|
88
|
+
puts 'Cancelling checks.'
|
89
|
+
logger.write('User cancelled.')
|
90
|
+
exit 0
|
91
|
+
else
|
92
|
+
puts PackageChanger::ERROR
|
93
|
+
logger.write(PackageChanger::ERROR)
|
94
|
+
exit 1
|
59
95
|
end
|
60
|
-
return result_array
|
61
96
|
end
|
62
97
|
|
63
|
-
end # PackageChanger
|
98
|
+
end # PackageChanger
|
@@ -5,7 +5,7 @@ module PackageChanger
|
|
5
5
|
|
6
6
|
≈≈≈ PackageChanger ≈≈≈
|
7
7
|
|
8
|
-
Usage: packagechanger [--silent] --old OldPackageName --new NewPackageName || --list ListedPackage
|
8
|
+
Usage: packagechanger [--silent] [--policy PolicyID] --old OldPackageName --new NewPackageName || --list ListedPackage
|
9
9
|
"
|
10
10
|
|
11
11
|
|
@@ -24,28 +24,39 @@ module PackageChanger
|
|
24
24
|
|
25
25
|
≈≈≈ PackageChanger ≈≈≈
|
26
26
|
|
27
|
-
Missing packages: One or both of the provided packages do not exist. Please verify.
|
27
|
+
\u{1f4a9} Missing packages: One or both of the provided packages do not exist. Please verify.
|
28
|
+
"
|
29
|
+
|
30
|
+
MISSSING_POLICY = "
|
31
|
+
|
32
|
+
≈≈≈ PackageChanger ≈≈≈
|
33
|
+
|
34
|
+
\u{1f4a9} Missing policy: The policy ID you provided does not exist. Please verify.
|
28
35
|
"
|
29
36
|
|
30
37
|
MISSSING_LIST_PACKAGE = "
|
31
38
|
|
32
39
|
≈≈≈ PackageChanger ≈≈≈
|
33
40
|
|
34
|
-
Missing package: The provided package does not exist. Please verify.
|
41
|
+
\u{1f4a9} Missing package: The provided package does not exist. Please verify.
|
35
42
|
"
|
36
43
|
|
37
44
|
NO_RESULTS_LIST = "
|
38
45
|
|
39
|
-
There are no policies using the provided package.
|
46
|
+
\u{1F6AB 1F4E6} There are no policies using the provided package.
|
40
47
|
"
|
41
48
|
|
42
49
|
NO_RESULTS_CHANGE = "
|
43
50
|
|
44
|
-
There are no policies using the package you intend to change.
|
51
|
+
\u{1F6AB 1F4E6} There are no policies using the package you intend to change.
|
45
52
|
"
|
46
53
|
|
47
54
|
ERROR = "
|
48
55
|
|
49
56
|
Execution error.
|
50
57
|
"
|
58
|
+
|
59
|
+
STARTUP = "
|
60
|
+
≈≈≈ PackageChanger ≈≈≈
|
61
|
+
"
|
51
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: PackageChanger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernardo Prieto
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,33 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '5.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: ruby-jss
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
version: '1.0'
|
62
62
|
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 1.
|
64
|
+
version: 1.2.3
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -71,7 +71,7 @@ dependencies:
|
|
71
71
|
version: '1.0'
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 1.
|
74
|
+
version: 1.2.3
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: ruby-jss
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
version: '1.0'
|
82
82
|
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 1.
|
84
|
+
version: 1.2.3
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -91,13 +91,14 @@ dependencies:
|
|
91
91
|
version: '1.0'
|
92
92
|
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 1.
|
94
|
+
version: 1.2.3
|
95
95
|
description: |-
|
96
|
-
With the help or Ruby JSS, uses the API to list all the policies in which a package appears
|
96
|
+
With the help or Ruby JSS, uses the API to list all or one the policies in which a package appears
|
97
97
|
and gives the ability to replace the package in all these policies.
|
98
98
|
email:
|
99
99
|
- bernardo.prieto.curiel@zalando.de
|
100
|
-
executables:
|
100
|
+
executables:
|
101
|
+
- PackageChanger
|
101
102
|
extensions: []
|
102
103
|
extra_rdoc_files: []
|
103
104
|
files:
|
@@ -112,6 +113,7 @@ files:
|
|
112
113
|
- ".travis.yml"
|
113
114
|
- Gemfile
|
114
115
|
- LICENSE.txt
|
116
|
+
- PackageChanger-0.1.0.gem
|
115
117
|
- PackageChanger.gemspec
|
116
118
|
- README.md
|
117
119
|
- Rakefile
|
@@ -149,10 +151,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
151
|
- !ruby/object:Gem::Version
|
150
152
|
version: '0'
|
151
153
|
requirements: []
|
152
|
-
|
153
|
-
rubygems_version: 2.5.2.3
|
154
|
+
rubygems_version: 3.0.3
|
154
155
|
signing_key:
|
155
156
|
specification_version: 4
|
156
|
-
summary: Uses the API to list or replace a package in all JSS policies in which
|
157
|
-
appears.
|
157
|
+
summary: Uses the API to list or replace a package in all or one JSS policies in which
|
158
|
+
it appears.
|
158
159
|
test_files: []
|