firespring_dev_commands 3.0.2.pre.alpha.0 → 3.1.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: eafd206b2464356f3683dc781936eb3cc5ca1296ed130b360bc6d7ecb218f1c5
4
- data.tar.gz: 416a0585f3974ad8435422efb986154f2027e6665fa670ae142cbf9c9ba8af25
3
+ metadata.gz: b8a0cf1089d3d18c9125820042028a2c2acd1324aec9cc1f7e0a6726a643d2ed
4
+ data.tar.gz: 374e07c279f5a49e364f6de708349214441174ab92fa2d52ac90e117ccf46ab8
5
5
  SHA512:
6
- metadata.gz: a4f6dc58f90b3dfdf2d0ba614f830024548dce70788afdeb5bf9dba0b5c3cd1b3bd01cb28b8955c02e4ac033a4246a3f3455e023c813553da758e0bd83516bf1
7
- data.tar.gz: 97e72febb58871e687893ec32f68d5fd7942987e572bd70b27d064c76f65fc7c0d1417591bfd68c5634b36e01c8662c8404cb18e821b3a2a483c589e8c9808ed
6
+ metadata.gz: a90a05a3beef66c4cbc4a931f3f09c836b5e489e4c0e979d786f8d17a122e8fe12bb1eaed0b0387c0127e6a6ea7f03500ef85828efd921a7ca59707bbafdb2b5
7
+ data.tar.gz: 4b7b731d9ba25e3ebf8d14ac7da991e2b111ff9cd9e69cc09c9595b20d35699d80230dadea34cd7923bbdaeaccaae2b76d56b15c4062a98883fb6e60a13f2aab
@@ -0,0 +1,37 @@
1
+ module Dev
2
+ class EndOfLife
3
+ class Node
4
+ attr_reader :node, :lockfile
5
+
6
+ def initialize(node = Dev::Node.new)
7
+ @node = node
8
+ @lockfile = File.join(node.local_path, "#{node.package_file.reverse.split('.')[-1].reverse}-lock.json")
9
+ end
10
+
11
+ def default_products
12
+ npm_products
13
+ end
14
+
15
+ def npm_products
16
+ eol = Dev::EndOfLife.new
17
+ major_version_only_products = %w(ckeditor vue jquery)
18
+
19
+ [].tap do |ary|
20
+ packages = JSON.parse(File.read(lockfile))&.fetch('packages', [])
21
+ packages.each do |key, info|
22
+ name = key.split('node_modules/').last
23
+ product = name
24
+
25
+ # Make sure what we found is supported by the EOL library
26
+ next unless eol.product?(product)
27
+
28
+ version = info['version'].reverse.split('.')[-2..].join('.').reverse.tr('v', '')
29
+ version = version.split('.').first if major_version_only_products.include?(product)
30
+ version.chop! if version.end_with?('.00')
31
+ ary << Dev::EndOfLife::ProductVersion.new(product, version, name)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,45 @@
1
+ module Dev
2
+ class EndOfLife
3
+ class Php
4
+ attr_reader :php, :lockfile
5
+
6
+ def initialize(php = Dev::Php.new)
7
+ @php = php
8
+ @lockfile = File.join(php.local_path, "#{php.package_file.reverse.split('.')[-1].reverse}.lock")
9
+ end
10
+
11
+ def default_products
12
+ composer_products
13
+ end
14
+
15
+ def composer_products
16
+ eol = Dev::EndOfLife.new
17
+ major_version_only_products = ['laravel']
18
+ laravel_products = ['laravel/framework']
19
+ symfony_products = ['symfony/http-client', 'symfony/mailer', 'symfony/mailchimp-mailer']
20
+
21
+ [].tap do |ary|
22
+ packages = JSON.parse(File.read(lockfile))&.fetch('packages', [])
23
+ packages&.each do |package|
24
+ name = package['name']
25
+ product = if laravel_products.include?(name)
26
+ 'laravel'
27
+ elsif symfony_products.include?(name)
28
+ 'symfony'
29
+ else
30
+ name
31
+ end
32
+
33
+ # Make sure what we found is supported by the EOL library
34
+ next unless eol.product?(product)
35
+
36
+ version = package['version'].reverse.split('.')[-2..].join('.').reverse.tr('v', '')
37
+ version = version.split('.').first if major_version_only_products.include?(product)
38
+ version.chop! if version.end_with?('.00')
39
+ ary << Dev::EndOfLife::ProductVersion.new(product, version, name)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,37 @@
1
+ module Dev
2
+ class EndOfLife
3
+ class Ruby
4
+ attr_reader :ruby, :lockfile
5
+
6
+ def initialize(ruby = Dev::Ruby.new)
7
+ @ruby = ruby
8
+ @lockfile = File.join(ruby.local_path, "#{ruby.package_file.reverse.split('.')[-1].reverse}.lock")
9
+ end
10
+
11
+ def default_products
12
+ composer_products
13
+ end
14
+
15
+ def composer_products
16
+ eol = Dev::EndOfLife.new
17
+ major_version_only_products = []
18
+
19
+ [].tap do |ary|
20
+ packages = Bundler::LockfileParser.new(Bundler.read_file(lockfile)).specs
21
+ packages.each do |package|
22
+ name = package.name
23
+ product = name
24
+
25
+ # Make sure what we found is supported by the EOL library
26
+ next unless eol.product?(product)
27
+
28
+ version = package.version.to_s.reverse.split('.')[-2..].join('.').reverse.tr('v', '')
29
+ version = version.split('.').first if major_version_only_products.include?(product)
30
+ version.chop! if version.end_with?('.00')
31
+ ary << Dev::EndOfLife::ProductVersion.new(product, version, name)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -46,8 +46,18 @@ module Dev
46
46
  @products
47
47
  end
48
48
 
49
+ # Returns true if the given product is supported either in the endoflife api products or a manual product
50
+ def product?(product)
51
+ products.include?(product) || self.class.config.manual_dates.any? { |key, _| key.to_s.start_with?("#{product}_") }
52
+ end
53
+
49
54
  # Prints all of the product version statuses
50
55
  def status
56
+ if product_versions.empty?
57
+ puts ' no tracked products'
58
+ return
59
+ end
60
+
51
61
  product_versions.sort_by(&:name).each(&:print_status)
52
62
  end
53
63
 
@@ -1,6 +1,5 @@
1
1
  require 'fileutils'
2
2
  require 'git'
3
- require 'octokit'
4
3
 
5
4
  module Dev
6
5
  # Class for performing git functions
@@ -97,7 +96,8 @@ module Dev
97
96
  def branch_name(dir: default_project_dir)
98
97
  return unless File.exist?(dir)
99
98
 
100
- ::Git.open(dir).current_branch
99
+ g = ::Git.open(dir)
100
+ g.current_branch || "HEAD detached at #{g.object('HEAD').sha[0..7]}"
101
101
  end
102
102
 
103
103
  # Returns true if the remote branch exists, false otherwise
@@ -425,22 +425,6 @@ module Dev
425
425
  g.fetch('origin', prune: true)
426
426
  end
427
427
 
428
- def commit_status(repository:, branch:, status:, organization: 'firespring', options: {})
429
- token = ENV['GITHUB_TOKEN'].to_s.strip
430
- raise 'GITHUB_TOKEN is required' unless token
431
-
432
- # Set up the GitHub client
433
- client = Octokit::Client.new(access_token: token)
434
-
435
- # Fetch the latest commit SHA for the given branch
436
- repo = "#{organization}/#{repository}"
437
- ref = "heads/#{branch}"
438
- sha = client.ref(repo, ref).object.sha
439
-
440
- # Create the commit status
441
- client.create_status(repo, sha, status, options)
442
- end
443
-
444
428
  # Builds an ssh repo URL using the org and repo name given
445
429
  def ssh_repo_url(name, org)
446
430
  "git@github.com:#{org}/#{name}.git"
@@ -99,7 +99,6 @@ module Dev
99
99
 
100
100
  DEV_COMMANDS_TOP_LEVEL.instance_eval do
101
101
  return if exclude.include?(:eol)
102
- return if ENV.fetch('CHECK_AWS', nil).to_s.strip == 'false'
103
102
 
104
103
  task eol: [:'eol:aws'] do
105
104
  # This is just a placeholder to execute the dependencies
@@ -108,12 +107,16 @@ module Dev
108
107
  namespace :eol do
109
108
  desc 'Compares the current date to the EOL date for supported aws resources'
110
109
  task aws: %w(init ensure_aws_credentials) do
110
+ next if ENV.fetch('CHECK_AWS', nil).to_s.strip == 'false'
111
+
112
+ aws_products = Dev::EndOfLife::Aws.new.default_products
113
+ next if aws_products.empty?
114
+
115
+ puts
111
116
  account_id = Dev::Aws::Profile.new.current
112
117
  account_name = Dev::Aws::Account.new.name_by_account(account_id)
113
- LOG.info " Current AWS Account is #{account_name} (#{account_id})".light_yellow
114
- puts
115
- Dev::EndOfLife.new(product_versions: Dev::EndOfLife::Aws.new.default_products).status
116
- puts
118
+ puts "AWS product versions (in account #{account_name} / #{account_id})".light_yellow
119
+ Dev::EndOfLife.new(product_versions: aws_products).status
117
120
  end
118
121
  end
119
122
  end
@@ -214,6 +214,33 @@ module Dev
214
214
  end
215
215
  end
216
216
  end
217
+
218
+ # Create the rake task for the node eol method
219
+ def create_eol_task!
220
+ # Have to set a local variable to be accessible inside of the instance_eval block
221
+ exclude = @exclude
222
+ node = @node
223
+
224
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
225
+ return if exclude.include?(:eol)
226
+
227
+ task eol: [:'eol:node'] do
228
+ # This is just a placeholder to execute the dependencies
229
+ end
230
+
231
+ namespace :eol do
232
+ desc 'Compares the current date to the EOL date for supported packages in the node package file'
233
+ task node: %w(init) do
234
+ eol = Dev::EndOfLife::Node.new(node)
235
+ node_products = eol.default_products
236
+
237
+ puts
238
+ puts "Node product versions (in #{eol.lockfile})".light_yellow
239
+ Dev::EndOfLife.new(product_versions: node_products).status
240
+ end
241
+ end
242
+ end
243
+ end
217
244
  end
218
245
  end
219
246
  end
@@ -260,6 +260,33 @@ module Dev
260
260
  end
261
261
  end
262
262
  end
263
+
264
+ # Create the rake task for the php eol method
265
+ def create_eol_task!
266
+ # Have to set a local variable to be accessible inside of the instance_eval block
267
+ exclude = @exclude
268
+ php = @php
269
+
270
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
271
+ return if exclude.include?(:eol)
272
+
273
+ task eol: [:'eol:php'] do
274
+ # Thie is just a placeholder to execute the dependencies
275
+ end
276
+
277
+ namespace :eol do
278
+ desc 'Compares the current date to the EOL date for supported packages in the php package file'
279
+ task php: %w(init) do
280
+ eol = Dev::EndOfLife::Php.new(php)
281
+ php_products = eol.default_products
282
+
283
+ puts
284
+ puts "Php product versions (in #{eol.lockfile})".light_yellow
285
+ Dev::EndOfLife.new(product_versions: php_products).status
286
+ end
287
+ end
288
+ end
289
+ end
263
290
  end
264
291
  end
265
292
  end
@@ -215,6 +215,33 @@ module Dev
215
215
  end
216
216
  end
217
217
  end
218
+
219
+ # Create the rake task for the ruby eol method
220
+ def create_eol_task!
221
+ # Have to set a local variable to be accessible inside of the instance_eval block
222
+ exclude = @exclude
223
+ ruby = @ruby
224
+
225
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
226
+ return if exclude.include?(:eol)
227
+
228
+ task eol: [:'eol:ruby'] do
229
+ # This is just a placeholder to execute the dependencies
230
+ end
231
+
232
+ namespace :eol do
233
+ desc 'Compares the current date to the EOL date for supported packages in the ruby package file'
234
+ task ruby: %w(init) do
235
+ eol = Dev::EndOfLife::Ruby.new(ruby)
236
+ ruby_products = eol.default_products
237
+
238
+ puts
239
+ puts "Ruby product versions (in #{eol.lockfile})".light_yellow
240
+ Dev::EndOfLife.new(product_versions: ruby_products).status
241
+ end
242
+ end
243
+ end
244
+ end
218
245
  end
219
246
  end
220
247
  end
@@ -15,7 +15,13 @@ module Dev
15
15
  desc 'Compares the current date to the EOL date for all configured projects' \
16
16
  "\n\toptionally specify CHECK_AWS=<true/false> to toggle whether AWS resources are checked for EOL (defaults to true)"
17
17
  task eol: %w(init) do
18
- Dev::EndOfLife.new.status
18
+ manual_products = Dev::EndOfLife.new.product_versions
19
+ next if manual_products.empty?
20
+
21
+ puts
22
+ puts 'Manual product versions'
23
+ Dev::EndOfLife.new(product_versions: manual_products).status
24
+ puts
19
25
  end
20
26
  end
21
27
  end
@@ -159,49 +159,6 @@ module Dev
159
159
  end
160
160
  end
161
161
  end
162
-
163
- # Create the rake task for the git commit status task.
164
- def create_commit_status_task!
165
- # Have to set a local variable to be accessible inside of the instance_eval block
166
- exclude = @exclude
167
-
168
- DEV_COMMANDS_TOP_LEVEL.instance_eval do
169
- namespace :git do
170
- return if exclude.include?(:commit_status)
171
-
172
- # TODO: Clean, comments and description
173
- desc 'Add status to commit' \
174
- "\n\tuse TODO"
175
-
176
- task :create_commit_status do
177
- # Key Values
178
- repository = ENV['REPOSITORY'].to_s.strip
179
- branch = ENV['BRANCH'].to_s.strip
180
- status = ENV['STATUS'].to_s.strip
181
-
182
- raise 'Repository name is required' unless repository
183
- raise 'Branch name is required' unless branch
184
- raise 'Status is required' unless status
185
-
186
- # Validate status
187
- valid_statuses = %w(error failure pending success)
188
- raise "Invalid status: #{status}. Valid statuses are: #{valid_statuses.join(', ')}" unless valid_statuses.include?(status)
189
-
190
- # Optional Values
191
- context = ENV['CONTEXT'].to_s.strip
192
- description = ENV['DESCRIPTION'].to_s.strip
193
- target_url = ENV['TARGET_URL'].to_s.strip
194
-
195
- options = {}
196
- options[:context] = context unless context.empty?
197
- options[:description] = description unless description.empty?
198
- options[:target_url] = target_url unless target_url.empty?
199
-
200
- Dev::Git.new.commit_status(repository:, branch:, status:, options:)
201
- end
202
- end
203
- end
204
- end
205
162
  end
206
163
  end
207
164
  end
@@ -6,6 +6,6 @@ module Dev
6
6
  # Use 'v.v.v.pre.alpha.v' for pre-release vesions
7
7
  # Use 'v.v.v.beta.v for beta versions
8
8
  # Use semantic versioning for any releases (https://semver.org/)
9
- VERSION = '3.0.2.pre.alpha.0'.freeze
9
+ VERSION = '3.1.0'.freeze
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firespring_dev_commands
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2.pre.alpha.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Firespring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-03 00:00:00.000000000 Z
11
+ date: 2024-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -262,20 +262,6 @@ dependencies:
262
262
  - - "~>"
263
263
  - !ruby/object:Gem::Version
264
264
  version: 2.3.0
265
- - !ruby/object:Gem::Dependency
266
- name: octokit
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
270
- - !ruby/object:Gem::Version
271
- version: '8.1'
272
- type: :runtime
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
277
- - !ruby/object:Gem::Version
278
- version: '8.1'
279
265
  - !ruby/object:Gem::Dependency
280
266
  name: ox
281
267
  requirement: !ruby/object:Gem::Requirement
@@ -376,7 +362,10 @@ files:
376
362
  - lib/firespring_dev_commands/env.rb
377
363
  - lib/firespring_dev_commands/eol.rb
378
364
  - lib/firespring_dev_commands/eol/aws.rb
365
+ - lib/firespring_dev_commands/eol/node.rb
366
+ - lib/firespring_dev_commands/eol/php.rb
379
367
  - lib/firespring_dev_commands/eol/product_version.rb
368
+ - lib/firespring_dev_commands/eol/ruby.rb
380
369
  - lib/firespring_dev_commands/git.rb
381
370
  - lib/firespring_dev_commands/git/info.rb
382
371
  - lib/firespring_dev_commands/jira.rb
@@ -444,9 +433,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
444
433
  version: '3.1'
445
434
  required_rubygems_version: !ruby/object:Gem::Requirement
446
435
  requirements:
447
- - - ">"
436
+ - - ">="
448
437
  - !ruby/object:Gem::Version
449
- version: 1.3.1
438
+ version: '0'
450
439
  requirements: []
451
440
  rubygems_version: 3.4.10
452
441
  signing_key: