firespring_dev_commands 2.1.37.pre.alpha.2 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6c60886c07fe06093181d816b979f07cd1bcb55b14d6b86ef586c8fbc65fc43
4
- data.tar.gz: 41c394de5005718cc264b6bc12dda1bf7a1ce5edf6e764b3dc516675e7297ca1
3
+ metadata.gz: e21d0927fcb2bd86ade4738cf7cd0f95821200e63b8d58ab9fea8f095e7d85e5
4
+ data.tar.gz: 0bbeaf7d375ce02212e2c4b08cc27474a372cd41389f5b1012449b7b979af316
5
5
  SHA512:
6
- metadata.gz: d709361a1f3cfff3889f2437884aaae55014a8790bc9a17ca9a8fe1c7a7c3070dd3a47dc18879f83e04a726e18ce7ef55eee2f76edb0ccf5e4a7b33ec617b98e
7
- data.tar.gz: 21768f2ed5b1333839e8caa356d77bd7cccf30861eeba840f50d7493d511d033aa21fbfc05dafc48443883815584776d9c1a95e55a721722dec91932aff1cea6
6
+ metadata.gz: f4b0b807ef65b476a93fe875e5b9cfd94532729a824417adac7d621b2ba012312341da1d6fde1bde207ad12d5c26b5d5e7a77d64ca47e05d6fca7032be544b9c
7
+ data.tar.gz: 3f65efdb513bd1ff812161c49d4bce4967aa7eed9aa61b3f164d530f05bf06fc65222058e6ecda08c3c5848b85b4be7a4ef3eff521775edaadabe96449e686b7
@@ -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,19 +425,6 @@ module Dev
425
425
  g.fetch('origin', prune: true)
426
426
  end
427
427
 
428
- def commit_status(token:, repository:, branch:, status:, organization: 'firespring', options: {})
429
- # Set up the GitHub client
430
- client = Octokit::Client.new(access_token: token)
431
-
432
- # Fetch the latest commit SHA for the given branch
433
- repo = "#{organization}/#{repository}"
434
- ref = "heads/#{branch}"
435
- sha = client.ref(repo, ref).object.sha
436
-
437
- # Create the commit status
438
- client.create_status(repo, sha, status, options)
439
- end
440
-
441
428
  # Builds an ssh repo URL using the org and repo name given
442
429
  def ssh_repo_url(name, org)
443
430
  "git@github.com:#{org}/#{name}.git"
@@ -101,7 +101,6 @@ module Dev
101
101
 
102
102
  DEV_COMMANDS_TOP_LEVEL.instance_eval do
103
103
  return if exclude.include?(:eol)
104
- return if ENV.fetch('CHECK_AWS', nil).to_s.strip == 'false'
105
104
 
106
105
  task eol: [:'eol:aws'] do
107
106
  # This is just a placeholder to execute the dependencies
@@ -110,12 +109,16 @@ module Dev
110
109
  namespace :eol do
111
110
  desc 'Compares the current date to the EOL date for supported aws resources'
112
111
  task aws: %w(init ensure_aws_credentials) do
112
+ next if ENV.fetch('CHECK_AWS', nil).to_s.strip == 'false'
113
+
114
+ aws_products = Dev::EndOfLife::Aws.new.default_products
115
+ next if aws_products.empty?
116
+
117
+ puts
113
118
  account_id = Dev::Aws::Profile.new.current
114
119
  account_name = Dev::Aws::Account.new.name_by_account(account_id)
115
- LOG.info " Current AWS Account is #{account_name} (#{account_id})".light_yellow
116
- puts
117
- Dev::EndOfLife.new(product_versions: Dev::EndOfLife::Aws.new.default_products).status
118
- puts
120
+ puts "AWS product versions (in account #{account_name} / #{account_id})".light_yellow
121
+ Dev::EndOfLife.new(product_versions: aws_products).status
119
122
  end
120
123
  end
121
124
  end
@@ -47,14 +47,14 @@ end
47
47
  # Create the base init command
48
48
  DEV_COMMANDS_TOP_LEVEL.instance_eval do
49
49
  task :init do
50
- LOG.debug 'In base init'
50
+ # Default Base Init method
51
51
  end
52
52
  end
53
53
 
54
54
  # Create the base init_docker command
55
55
  DEV_COMMANDS_TOP_LEVEL.instance_eval do
56
56
  task init_docker: %w(init) do
57
- LOG.debug 'In base init docker'
57
+ # Default Base Init Docker method
58
58
  end
59
59
  end
60
60
 
@@ -163,6 +163,33 @@ module Dev
163
163
  end
164
164
  end
165
165
  end
166
+
167
+ # Create the rake task for the node eol method
168
+ def create_eol_task!
169
+ # Have to set a local variable to be accessible inside of the instance_eval block
170
+ exclude = @exclude
171
+ node = @node
172
+
173
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
174
+ return if exclude.include?(:eol)
175
+
176
+ task eol: [:'eol:node'] do
177
+ # This is just a placeholder to execute the dependencies
178
+ end
179
+
180
+ namespace :eol do
181
+ desc 'Compares the current date to the EOL date for supported packages in the node package file'
182
+ task node: %w(init) do
183
+ eol = Dev::EndOfLife::Node.new(node)
184
+ node_products = eol.default_products
185
+
186
+ puts
187
+ puts "Node product versions (in #{eol.lockfile})".light_yellow
188
+ Dev::EndOfLife.new(product_versions: node_products).status
189
+ end
190
+ end
191
+ end
192
+ end
166
193
  end
167
194
  end
168
195
  end
@@ -210,6 +210,33 @@ module Dev
210
210
  end
211
211
  end
212
212
  end
213
+
214
+ # Create the rake task for the php eol method
215
+ def create_eol_task!
216
+ # Have to set a local variable to be accessible inside of the instance_eval block
217
+ exclude = @exclude
218
+ php = @php
219
+
220
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
221
+ return if exclude.include?(:eol)
222
+
223
+ task eol: [:'eol:php'] do
224
+ # Thie is just a placeholder to execute the dependencies
225
+ end
226
+
227
+ namespace :eol do
228
+ desc 'Compares the current date to the EOL date for supported packages in the php package file'
229
+ task php: %w(init) do
230
+ eol = Dev::EndOfLife::Php.new(php)
231
+ php_products = eol.default_products
232
+
233
+ puts
234
+ puts "Php product versions (in #{eol.lockfile})".light_yellow
235
+ Dev::EndOfLife.new(product_versions: php_products).status
236
+ end
237
+ end
238
+ end
239
+ end
213
240
  end
214
241
  end
215
242
  end
@@ -163,6 +163,33 @@ module Dev
163
163
  end
164
164
  end
165
165
  end
166
+
167
+ # Create the rake task for the ruby eol method
168
+ def create_eol_task!
169
+ # Have to set a local variable to be accessible inside of the instance_eval block
170
+ exclude = @exclude
171
+ ruby = @ruby
172
+
173
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
174
+ return if exclude.include?(:eol)
175
+
176
+ task eol: [:'eol:ruby'] do
177
+ # This is just a placeholder to execute the dependencies
178
+ end
179
+
180
+ namespace :eol do
181
+ desc 'Compares the current date to the EOL date for supported packages in the ruby package file'
182
+ task ruby: %w(init) do
183
+ eol = Dev::EndOfLife::Ruby.new(ruby)
184
+ ruby_products = eol.default_products
185
+
186
+ puts
187
+ puts "Ruby product versions (in #{eol.lockfile})".light_yellow
188
+ Dev::EndOfLife.new(product_versions: ruby_products).status
189
+ end
190
+ end
191
+ end
192
+ end
166
193
  end
167
194
  end
168
195
  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,58 +159,6 @@ module Dev
159
159
  end
160
160
  end
161
161
  end
162
-
163
- # rubocop:disable Metrics/MethodLength
164
- # Create the rake task for the git commit status task.
165
- def create_commit_status_task!
166
- # Have to set a local variable to be accessible inside of the instance_eval block
167
- exclude = @exclude
168
- DEV_COMMANDS_TOP_LEVEL.instance_eval do
169
- namespace :git do
170
- return if exclude.include?(:commit_status)
171
-
172
- desc 'Add status to PR' \
173
- "\n\tuse GITHUB_TOKEN=abc123 enables write options for the check (required)" \
174
- "\n\tuse REPOSITORY=abc123 to specify the repository (required)" \
175
- "\n\tuse BRANCH=abc123 to specify the branch of code (required)" \
176
- "\n\tuse CONTEXT=abc123 names the check on the PR (optional)" \
177
- "\n\tuse TARGET_URL={url} adds 'detail' hyperlink to check on the PR (optional)"
178
-
179
- # Key Values
180
- token = ENV['GITHUB_TOKEN'].to_s.strip
181
- repository = ENV['REPOSITORY'].to_s.strip
182
- branch = ENV['BRANCH'].to_s.strip
183
-
184
- raise 'GITHUB_TOKEN is required' unless token
185
- raise 'Repository name is required' unless repository
186
- raise 'Branch name is required' unless branch
187
-
188
- options = {}
189
- options[:context] = ENV['CONTEXT'].to_s.strip unless ENV['CONTEXT'].to_s.strip.empty?
190
- options[:target_url] = ENV['TARGET_URL'].to_s.strip unless ENV['TARGET_URL'].to_s.strip.empty?
191
-
192
- namespace :commit_status do
193
- desc 'Add status success'
194
- task :success do
195
- Dev::Git.new.commit_status(token:, repository:, branch:, status: 'success', options:)
196
- end
197
- desc 'Add status pending'
198
- task :pending do
199
- Dev::Git.new.commit_status(token:, repository:, branch:, status: 'pending', options:)
200
- end
201
- desc 'Add status error'
202
- task :error do
203
- Dev::Git.new.commit_status(token:, repository:, branch:, status: 'error', options:)
204
- end
205
- desc 'Add status failure'
206
- task :failure do
207
- Dev::Git.new.commit_status(token:, repository:, branch:, status: 'failure', options:)
208
- end
209
- end
210
- end
211
- end
212
- end
213
- # rubocop:enable Metrics/MethodLength
214
162
  end
215
163
  end
216
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 = '2.1.37.pre.alpha.2'.freeze
9
+ VERSION = '2.2.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: 2.1.37.pre.alpha.2
4
+ version: 2.2.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-23 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
@@ -220,20 +220,6 @@ dependencies:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
222
  version: 2.8.1
223
- - !ruby/object:Gem::Dependency
224
- name: faraday-retry
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - "~>"
228
- - !ruby/object:Gem::Version
229
- version: '2.0'
230
- type: :runtime
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - "~>"
235
- - !ruby/object:Gem::Version
236
- version: '2.0'
237
223
  - !ruby/object:Gem::Dependency
238
224
  name: git
239
225
  requirement: !ruby/object:Gem::Requirement
@@ -276,20 +262,6 @@ dependencies:
276
262
  - - "~>"
277
263
  - !ruby/object:Gem::Version
278
264
  version: 2.3.0
279
- - !ruby/object:Gem::Dependency
280
- name: octokit
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - "~>"
284
- - !ruby/object:Gem::Version
285
- version: '8.1'
286
- type: :runtime
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - "~>"
291
- - !ruby/object:Gem::Version
292
- version: '8.1'
293
265
  - !ruby/object:Gem::Dependency
294
266
  name: ox
295
267
  requirement: !ruby/object:Gem::Requirement
@@ -389,7 +361,10 @@ files:
389
361
  - lib/firespring_dev_commands/env.rb
390
362
  - lib/firespring_dev_commands/eol.rb
391
363
  - lib/firespring_dev_commands/eol/aws.rb
364
+ - lib/firespring_dev_commands/eol/node.rb
365
+ - lib/firespring_dev_commands/eol/php.rb
392
366
  - lib/firespring_dev_commands/eol/product_version.rb
367
+ - lib/firespring_dev_commands/eol/ruby.rb
393
368
  - lib/firespring_dev_commands/git.rb
394
369
  - lib/firespring_dev_commands/git/info.rb
395
370
  - lib/firespring_dev_commands/jira.rb
@@ -457,9 +432,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
457
432
  version: '3.1'
458
433
  required_rubygems_version: !ruby/object:Gem::Requirement
459
434
  requirements:
460
- - - ">"
435
+ - - ">="
461
436
  - !ruby/object:Gem::Version
462
- version: 1.3.1
437
+ version: '0'
463
438
  requirements: []
464
439
  rubygems_version: 3.4.10
465
440
  signing_key: