PackageChanger 0.2.0 → 0.3.0

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
2
  SHA256:
3
- metadata.gz: e42fcbfef88337d942d5dc3d91e33252959b753a3d15cbdf1581bd8eb14463be
4
- data.tar.gz: 04504df89dac7433c272baaf28b8f4d409f31932bc06c2cb009daa647ff107b7
3
+ metadata.gz: 981f3ec735d35c942e1aa40e563b4406b1757757685f4c0786be321101976deb
4
+ data.tar.gz: 75bcad50ab045e12aab08ec90644ea7101a9ead338b6aa3847be8bb1cb31bc8a
5
5
  SHA512:
6
- metadata.gz: cfc931f07224a433d2ee321f47dee9b8d068670a312ecf709f4a8eb6ea3cc7ff27b541d6901f639e90793c3c1d3b4fd47c1cd7d5bb1047b6246a8ee2005a15ae
7
- data.tar.gz: d550a5ebb9334978ea5608ccc02aadcdeb9503b09ba731a74e9eec7de3085b3ca33078c96928a623cfcf6e462c3b35e334ba9c5c906bf9102ee70ba0917b13fc
6
+ metadata.gz: b60ab714163bd9917ed5ef194f5c55ec017fadc24715bc47b9f8bb2f54c140fa0257efb36d6007656702362eccf8131cbeb454312f800cdf32367339ff75c9a5
7
+ data.tar.gz: ab4d87b6ee76e39b2994517721243e440f0f7b9a0544309b299d71dd0c087cf2754da111eb60985597c61114c628af5ec30cd17064477bd1f1a495d40d7df753
@@ -0,0 +1 @@
1
+ 2.6.3
Binary file
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
40
40
 
41
41
  spec.add_development_dependency 'bundler', '~> 2.0'
42
42
  spec.add_development_dependency 'minitest', '~> 5.0'
43
- spec.add_development_dependency 'rake', '~> 10.0'
43
+ spec.add_development_dependency 'rake', '>= 12.3.3'
44
44
  spec.add_development_dependency 'ruby-jss', '~> 1.0', '>= 1.2.3'
45
45
  spec.add_runtime_dependency 'ruby-jss', '~> 1.0', '>= 1.2.3'
46
46
  end
data/README.md CHANGED
@@ -14,7 +14,9 @@ You can copy a sample file from the data folder inside the installation path of
14
14
 
15
15
  Once configured, you can use it:
16
16
 
17
- ```packagechanger [--silent] --old OldPackageName --new NewPackageName || --list ListedPackage```
17
+ ```packagechanger [--silent] [--policy PolicyID] --old OldPackageName --new NewPackageName || --list ListedPackage```
18
+
19
+ The PolicyID can be either the numeric ID of a JSS policy, or its name between quotes.
18
20
 
19
21
  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
22
 
@@ -13,8 +13,8 @@ old_package = nil
13
13
  new_package = nil
14
14
  list_package = nil
15
15
  target_policy = nil
16
- mode = nil
17
- result_array = []
16
+ app_title = nil
17
+ version = nil
18
18
  silent = false
19
19
 
20
20
  # The CLI options for GetoptLong
@@ -23,7 +23,11 @@ OPTS = GetoptLong.new(
23
23
  ['--old', '-o', GetoptLong::REQUIRED_ARGUMENT],
24
24
  ['--new', '-n', GetoptLong::REQUIRED_ARGUMENT],
25
25
  ['--list', '-l', GetoptLong::REQUIRED_ARGUMENT],
26
- ['--silent', '-s', GetoptLong::NO_ARGUMENT]
26
+ ['--silent', '-s', GetoptLong::NO_ARGUMENT],
27
+ ['--patch', '-x', GetoptLong::REQUIRED_ARGUMENT],
28
+ ['--version', '-v', GetoptLong::REQUIRED_ARGUMENT],
29
+ ['--test', '-t', GetoptLong::REQUIRED_ARGUMENT],
30
+ ['--release', '-r', GetoptLong::REQUIRED_ARGUMENT]
27
31
  )
28
32
 
29
33
  logger = PackageChanger::Log.new
@@ -33,7 +37,7 @@ mode = 'change'
33
37
 
34
38
  OPTS.each do |opt, arg|
35
39
  case opt
36
- when '--policy'
40
+ when '--policy', '-p'
37
41
  if arg == ''
38
42
  puts PackageChanger::USAGE
39
43
  logger.write('Missing arguments.')
@@ -45,7 +49,7 @@ OPTS.each do |opt, arg|
45
49
  mode = 'single'
46
50
  end
47
51
 
48
- when '--old'
52
+ when '--old', '-o'
49
53
  if arg == ''
50
54
  puts PackageChanger::USAGE
51
55
  logger.write('Missing arguments.')
@@ -54,7 +58,7 @@ OPTS.each do |opt, arg|
54
58
  old_package = arg
55
59
  end
56
60
 
57
- when '--new'
61
+ when '--new', '-n'
58
62
  if arg == ''
59
63
  puts PackageChanger::USAGE
60
64
  logger.write('Missing arguments.')
@@ -63,7 +67,7 @@ OPTS.each do |opt, arg|
63
67
  new_package = arg
64
68
  end
65
69
 
66
- when '--list'
70
+ when '--list', '-l'
67
71
  if arg == ''
68
72
  puts PackageChanger::USAGE
69
73
  logger.write('Missing arguments.')
@@ -74,13 +78,52 @@ OPTS.each do |opt, arg|
74
78
  # Change mode to list if flag is used
75
79
  mode = 'list'
76
80
  end
77
- when '--silent'
81
+
82
+ when '--silent', '-s'
78
83
  silent = true
79
84
 
85
+ when '--patch', '-x'
86
+ if arg == ''
87
+ puts PackageChanger::PATCH_USAGE
88
+ logger.write('Missing arguments.')
89
+ exit 1
90
+ else
91
+ app_title = arg
92
+ mode = 'patch'
93
+ end
94
+
95
+ when '--version', '-v'
96
+ if arg == ''
97
+ puts PackageChanger::PATCH_USAGE
98
+ logger.write('Missing arguments.')
99
+ exit 1
100
+ else
101
+ version = arg
102
+ end
103
+
104
+ when '--test', '-t'
105
+ if arg == ''
106
+ puts PackageChanger::PATCH_USAGE
107
+ logger.write('Missing arguments.')
108
+ exit 1
109
+ else
110
+ app_title = arg
111
+ mode = 'test'
112
+ end
113
+
114
+ when '--release', '-r'
115
+ if arg == ''
116
+ puts PackageChanger::PATCH_USAGE
117
+ logger.write('Missing arguments.')
118
+ exit 1
119
+ else
120
+ app_title = arg
121
+ mode = 'release'
122
+ end
80
123
  end
81
124
  end
82
125
 
83
- unless (old_package && new_package) || list_package
126
+ unless (old_package && new_package) || list_package || (app_title && new_package) || app_title
84
127
  puts PackageChanger::USAGE
85
128
  logger.write('Missing package names')
86
129
  exit 1
@@ -88,6 +131,8 @@ end
88
131
 
89
132
  begin
90
133
  puts PackageChanger::STARTUP unless silent
134
+
135
+ # Check for configurations before starting
91
136
  if PackageChanger::Configuration::DEFAULT_CONF_FILE.file?
92
137
  @config_src = PackageChanger::Configuration::DEFAULT_CONF_FILE.to_s
93
138
  elsif PackageChanger::Configuration::SAMPLE_CONF_FILE.file?
@@ -98,16 +143,17 @@ begin
98
143
 
99
144
  PackageChanger.connect_to_jss(silent)
100
145
 
101
- if mode == 'list'
146
+ case mode
147
+ when 'list'
102
148
  unless JSS::Package.valid_id list_package
103
149
  logger.write("#{list_package} does not exist")
104
- puts PackageChanger::MISSSING_LIST_PACKAGE
150
+ puts PackageChanger::MISSING_LIST_PACKAGE
105
151
  exit 1
106
152
  end
107
153
 
108
154
  result_array = PackageChanger.get_policies_with(list_package, silent, logger)
109
155
 
110
- if result_array.count > 0
156
+ if result_array.count.positive?
111
157
  puts "\u{1F3C1} The package #{list_package} is used on the following policies: "
112
158
  result_array.each do |result|
113
159
  puts "\t#{result[:id]} - #{result[:name]}"
@@ -117,16 +163,16 @@ begin
117
163
  exit 0
118
164
  end
119
165
 
120
- elsif mode == 'change'
166
+ when 'change'
121
167
  unless JSS::Package.valid_id(old_package) && JSS::Package.valid_id(new_package)
122
168
  logger.write("Either #{old_package} or #{new_package} do not exist")
123
- puts PackageChanger::MISSSING_PACKAGE
169
+ puts PackageChanger::MISSING_PACKAGE
124
170
  exit 1
125
171
  end
126
172
 
127
173
  result_array = PackageChanger.get_policies_with(old_package, silent)
128
174
 
129
- if result_array.count > 0
175
+ if result_array.count.positive?
130
176
  puts "The package #{old_package} will be replaced with #{new_package}: "
131
177
  logger.write("The package #{old_package} will be replaced with #{new_package}")
132
178
  result_array.each do |result|
@@ -134,20 +180,9 @@ begin
134
180
  logger.write("\t#{result[:id]} - #{result[:name]}")
135
181
  end
136
182
 
137
- confirmation = ''
138
-
139
- while confirmation !~ /[yn]/i
140
- puts 'Please confirm [y/n]:'
141
- confirmation = gets.chomp.downcase
142
- end
143
-
144
- case confirmation
183
+ case PackageChanger.confirm
145
184
  when 'y'
146
- puts 'Processing changes.' unless silent
147
- logger.write('Starting changes.')
148
185
  PackageChanger.replace_packages(result_array, old_package, new_package, silent, logger)
149
- puts "\u{1F3C1} Finished changing packages." unless silent
150
- logger.write('Finished changing.')
151
186
  exit 0
152
187
  when 'n'
153
188
  puts 'Cancelling changes.'
@@ -165,18 +200,54 @@ begin
165
200
  exit 0
166
201
  end
167
202
 
168
- elsif mode == 'single'
203
+ when 'patch'
204
+ patch_title = PackageChanger.check_patch(app_title, new_package, version, silent, logger)
205
+
206
+ case PackageChanger.confirm
207
+ when 'y'
208
+ PackageChanger.assign_patch(patch_title, new_package, version, silent, logger)
209
+ exit 0
210
+ when 'n'
211
+ puts "\u{1F519} Cancelling changes."
212
+ logger.write('User cancelled.')
213
+ exit 0
214
+ else
215
+ puts PackageChanger::ERROR
216
+ logger.write(PackageChanger::ERROR)
217
+ exit 1
218
+ end
219
+
220
+ when 'test', 'release'
221
+ patch_policy_id = PackageChanger.check_version_for_mode(app_title, version, mode, silent, logger)
222
+
223
+ puts "\u{1f3AB} #{app_title} has a #{mode} patch policy with ID #{patch_policy_id}" unless silent
224
+ logger.write("#{app_title} has a #{mode} patch policy with ID #{patch_policy_id}")
225
+
226
+ case PackageChanger.confirm
227
+ when 'y'
228
+ PackageChanger.activate_patch_for_mode(app_title, mode, version, patch_policy_id, silent, logger)
229
+ exit 0
230
+ when 'n'
231
+ puts "\u{1F519} Cancelling changes."
232
+ logger.write('User cancelled.')
233
+ exit 0
234
+ else
235
+ puts PackageChanger::ERROR
236
+ logger.write(PackageChanger::ERROR)
237
+ exit 1
238
+ end
239
+
240
+ when 'single'
169
241
  unless JSS::Package.valid_id(old_package) && JSS::Package.valid_id(new_package)
170
242
  logger.write("Either #{old_package} or #{new_package} does not exist")
171
- puts PackageChanger::MISSSING_PACKAGE
243
+ puts PackageChanger::MISSING_PACKAGE
172
244
  exit 1
173
245
  end
174
246
 
175
-
176
247
  target_policy = target_policy.match(/[^[:digit:]]+/) ? target_policy : target_policy.to_i
177
248
  unless JSS::Policy.valid_id(target_policy)
178
249
  logger.write("The policy with id #{target_policy} does not exist.")
179
- puts PackageChanger::MISSSING_POLICY
250
+ puts PackageChanger::MISSING_POLICY
180
251
  exit 1
181
252
  end
182
253
 
@@ -185,14 +256,7 @@ begin
185
256
  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
257
  logger.write("The package #{old_package} will be replaced with #{new_package} in #{changed_pol.name}")
187
258
 
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
259
+ case PackageChanger.confirm
196
260
  when 'y'
197
261
  puts "\u{1F3A2} Processing changes." unless silent
198
262
  logger.write('Starting changes.')
@@ -18,7 +18,9 @@ module PackageChanger
18
18
  jamf_port: :to_i,
19
19
  jamf_use_ssl: nil,
20
20
  jamf_user: nil,
21
- jamf_password: nil
21
+ jamf_password: nil,
22
+ testers_keyword: nil,
23
+ release_keyword: nil
22
24
  }.freeze
23
25
 
24
26
  # automatically create accessors for all the CONF_KEYS
@@ -86,4 +88,5 @@ module PackageChanger
86
88
  def self.config
87
89
  PackageChanger::Configuration.instance
88
90
  end
89
- end # module
91
+ end
92
+ # module
@@ -39,6 +39,8 @@ module PackageChanger
39
39
 
40
40
  def self.replace_packages_in(changed_pol, old_package, new_package, silent, logger)
41
41
  puts 'Starting replacement process' unless silent
42
+ puts 'Processing changes.' unless silent
43
+ logger.write('Starting changes.')
42
44
 
43
45
  puts "Changing #{changed_pol.name}" unless silent
44
46
  logger.write("Changing #{changed_pol.name}")
@@ -50,6 +52,9 @@ module PackageChanger
50
52
  puts "\u{1F6AB} Changed failed due to error: #{e.message}"
51
53
  logger.write("Changed on #{changed_pol.name} failed due to error: #{e.message}")
52
54
  end
55
+ puts "\u{1F3C1} Finished changing packages." unless silent
56
+ logger.write('Finished changing.')
57
+
53
58
  end
54
59
 
55
60
  def self.get_policies_with(list_package, silent, logger)
@@ -60,14 +65,7 @@ module PackageChanger
60
65
  }
61
66
  puts "\u{203C FE0F} There are #{all_policies.count} policies in your JSS…"
62
67
 
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
68
+ case confirm
71
69
  when 'y'
72
70
  pol_count = 1
73
71
  all_policies.each do |policy|
@@ -95,4 +93,100 @@ module PackageChanger
95
93
  end
96
94
  end
97
95
 
98
- end # PackageChanger
96
+ def self.check_patch(app_title, new_package, version, silent, logger)
97
+ unless (patch_id = JSS::PatchTitle.valid_id(app_title))
98
+ logger.write("No patch management for #{app_title} exists")
99
+ puts PackageChanger::MISSING_PATCH_MGMT
100
+ exit 1
101
+ end
102
+ puts "\u{1f4bb} #{app_title} has a patch policy with ID #{patch_id}." unless silent
103
+ logger.write("Preparing change to #{app_title} with ID #{patch_id}.")
104
+
105
+ unless JSS::Package.valid_id(new_package)
106
+ logger.write("#{new_package} does not exist")
107
+ puts PackageChanger::MISSSING_ONE_PACKAGE
108
+ exit 1
109
+ end
110
+ puts "\u{1F4E6} #{new_package} is available in JSS." unless silent
111
+ logger.write("#{new_package} is available in JSS.")
112
+
113
+ patch_title = JSS::PatchTitle.fetch id: patch_id
114
+ unless patch_title.versions[version]
115
+ logger.write("#{app_title} does not have version #{version}")
116
+ puts PackageChanger::MISSING_VERSION
117
+ exit 1
118
+ end
119
+ puts "\u{1f516} #{app_title} has a version #{version}" unless silent
120
+ logger.write("#{app_title} has a version #{version}")
121
+
122
+ patch_title
123
+ end
124
+ # check_patch
125
+
126
+ def self.assign_patch(patch_title, new_package, version, silent, logger)
127
+ puts "\u{1F3A2} Updating patch policy." unless silent
128
+ logger.write("Setting #{new_package} for version #{version} of #{patch_title}")
129
+ patch_title.versions[version].package = new_package
130
+ patch_title.update
131
+ puts "\u{1F3C1} Finished changing patch policy." unless silent
132
+ logger.write("Patch definition of #{patch_title} updated")
133
+ end
134
+ # assign_patch
135
+
136
+ def self.check_version_for_mode(app_title, version, mode, silent, logger)
137
+ unless (patch_id = JSS::PatchTitle.valid_id(app_title))
138
+ logger.write("No patch management for #{app_title} exists")
139
+ puts PackageChanger::MISSING_PATCH_MGMT
140
+ exit 1
141
+ end
142
+ puts "\u{1f4bb} #{app_title} has a patch definition with ID #{patch_id}." unless silent
143
+ logger.write("Preparing change to enable #{mode} of #{app_title} with patch ID #{patch_id}.")
144
+
145
+ patch_title = JSS::PatchTitle.fetch id: patch_id
146
+ patch_version = patch_title.versions[version]
147
+ unless patch_version&.package_assigned?
148
+ logger.write("#{app_title} does not have version #{version}")
149
+ puts PackageChanger::MISSING_VERSION
150
+ exit 1
151
+ end
152
+ puts "\u{1f516} #{app_title} has a version #{version} and it has an assigned package" unless silent
153
+ logger.write("#{app_title} has a version #{version} and it has an assigned package")
154
+
155
+ policies = (JSS::PatchPolicy.all_for_title app_title) # Gets all with the title
156
+ case mode
157
+ when 'test'
158
+ keyword = PackageChanger.config.testers_keyword
159
+ when 'release'
160
+ keyword = PackageChanger.config.release_keyword
161
+ else
162
+ logger.write("Wrong mode introduced")
163
+ exit 1
164
+ end
165
+
166
+ begin
167
+ policies.find { |pol| pol[:name].include? keyword }[:id]
168
+ rescue StandardError => _e
169
+ puts PackageChanger::MISSING_POLICY
170
+ exit 1
171
+ end
172
+ end
173
+ # check_version_for_mode
174
+
175
+ def self.activate_patch_for_mode(app_title, mode, version, policy_id, silent, logger)
176
+ puts "\u{1F3A2} Updating #{mode} patch for #{app_title}." unless silent
177
+ logger.write("Assigning version #{version} to #{mode} group.")
178
+ policy = JSS::PatchPolicy.fetch policy_id
179
+ policy.disable
180
+ puts "\u{23F8} Patch policy temporary disabled." unless silent
181
+ policy.target_version = version
182
+ puts "\u{1F517} Version #{version} assigned." unless silent
183
+ policy.enable
184
+ puts "\u{25B6} Patch policy reenabled." unless silent
185
+ policy.update
186
+ puts "\u{1F3C1} Values updated." unless silent
187
+ logger.write("Patch of #{app_title} updated for testers")
188
+ end
189
+ # activate_patch_for_mode
190
+
191
+ end
192
+ # PackageChanger
@@ -1,17 +1,13 @@
1
-
1
+ # frozen_string_literal: true
2
2
  module PackageChanger
3
-
4
3
  class Log
5
-
6
4
  DEFAULT_FILE = Pathname.new '/var/log/packagechanger.log'
7
5
 
8
6
  # date and line format
9
7
  DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
10
8
 
11
9
  def initialize
12
- unless DEFAULT_FILE.file? && DEFAULT_FILE.writable?
13
- File.write(DEFAULT_FILE, "≈≈≈ PackageChanger ≈≈≈\n", mode: 'a')
14
- end
10
+ File.write(DEFAULT_FILE, "≈≈≈ PackageChanger ≈≈≈\n", mode: 'a') unless (DEFAULT_FILE.file? && DEFAULT_FILE.writable?)
15
11
  end
16
12
 
17
13
  def write(message)
@@ -22,7 +18,7 @@ module PackageChanger
22
18
  puts message
23
19
  write message
24
20
  end
25
-
26
- end # Class Log
27
-
28
- end # MOdule
21
+ end
22
+ # Class Log
23
+ end
24
+ # MOdule
@@ -8,6 +8,13 @@ module PackageChanger
8
8
  Usage: packagechanger [--silent] [--policy PolicyID] --old OldPackageName --new NewPackageName || --list ListedPackage
9
9
  "
10
10
 
11
+ PATCH_USAGE = "
12
+
13
+ ≈≈≈ PackageChanger ≈≈≈
14
+
15
+ Patch definition usage: packagechanger [--silent] --patch PatchDefinitionID --version PatchVersion --new NewPackageName
16
+ "
17
+
11
18
 
12
19
  CONFIG_ERROR = "
13
20
 
@@ -20,21 +27,42 @@ module PackageChanger
20
27
 
21
28
  "
22
29
 
23
- MISSSING_PACKAGE = "
30
+ MISSING_PACKAGE = "
24
31
 
25
32
  ≈≈≈ PackageChanger ≈≈≈
26
33
 
27
34
  \u{1f4a9} Missing packages: One or both of the provided packages do not exist. Please verify.
28
35
  "
29
36
 
30
- MISSSING_POLICY = "
37
+ MISSING_PATCH_MGMT = "
38
+
39
+ ≈≈≈ PackageChanger ≈≈≈
40
+
41
+ \u{1f4a9} Missing patch definition: The provided software title does not have a patch definition. Please verify.
42
+ "
43
+
44
+ MISSING_ONE_PACKAGE = "
45
+
46
+ ≈≈≈ PackageChanger ≈≈≈
47
+
48
+ \u{1f4a9} Missing package: The package provided does not exist in JAMF. Please verify.
49
+ "
50
+
51
+ MISSING_VERSION = "
52
+
53
+ ≈≈≈ PackageChanger ≈≈≈
54
+
55
+ \u{1f4a9} Missing version: The patch definition for the title does not have the provided version registered.
56
+ "
57
+
58
+ MISSING_POLICY = "
31
59
 
32
60
  ≈≈≈ PackageChanger ≈≈≈
33
61
 
34
62
  \u{1f4a9} Missing policy: The policy ID you provided does not exist. Please verify.
35
63
  "
36
64
 
37
- MISSSING_LIST_PACKAGE = "
65
+ MISSING_LIST_PACKAGE = "
38
66
 
39
67
  ≈≈≈ PackageChanger ≈≈≈
40
68
 
@@ -59,4 +87,28 @@ module PackageChanger
59
87
  STARTUP = "
60
88
  ≈≈≈ PackageChanger ≈≈≈
61
89
  "
90
+
91
+ MISSING_TESTERS = "
92
+
93
+ ≈≈≈ PackageChanger ≈≈≈
94
+
95
+ \u{1f4a9} Missing testers group: In order to start testing the patch, a patch policy with the word Testers in its name needs to exist for the title.
96
+ "
97
+
98
+ MISSING_PATCH_POLICY = "
99
+
100
+ ≈≈≈ PackageChanger ≈≈≈
101
+
102
+ \u{1f4a9} Missing patch policy: The title you are trying to change does not have a patch policy with one of the keywords (test or release) in the title.
103
+ "
104
+
105
+ def self.confirm
106
+ confirmation = ''
107
+ while confirmation !~ /[yn]/i
108
+ puts 'Please confirm [y/n]:'
109
+ confirmation = gets.chomp.downcase
110
+ end
111
+ confirmation
112
+ end
113
+
62
114
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PackageChanger
2
- VERSION = "0.2.0"
4
+ VERSION = '0.3.0'
3
5
  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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernardo Prieto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-02 00:00:00.000000000 Z
11
+ date: 2020-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: 12.3.3
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: '10.0'
54
+ version: 12.3.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: ruby-jss
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -102,18 +102,13 @@ executables:
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - ".DS_Store"
106
105
  - ".gitignore"
107
- - ".idea/.rakeTasks"
108
- - ".idea/PackageChanger.iml"
109
- - ".idea/misc.xml"
110
- - ".idea/modules.xml"
111
- - ".idea/vcs.xml"
112
- - ".idea/workspace.xml"
106
+ - ".ruby-version"
113
107
  - ".travis.yml"
114
108
  - Gemfile
115
109
  - LICENSE.txt
116
110
  - PackageChanger-0.1.0.gem
111
+ - PackageChanger-0.2.0.gem
117
112
  - PackageChanger.gemspec
118
113
  - README.md
119
114
  - Rakefile