PackageChanger 0.2.0 → 0.3.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 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