ndr_dev_support 6.0.1 → 6.0.4

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: 5d8ff07e3e56e4665b16792797daed209e8842a69ea341959b6a6631eb8ced02
4
- data.tar.gz: fcac18ced590c4d02cbe4664572a741f6ff439637064c5213af2d30b6d8c5efa
3
+ metadata.gz: c974533f2670deb4a3c97be7fcc5e979441873e779dd30db443b1e3813aee8eb
4
+ data.tar.gz: 62927ddd9ce5a70f3870543aa6e15734489bca3449eccf5d8b18e3e145c79fae
5
5
  SHA512:
6
- metadata.gz: b85718ff1c1076d682c42b75c2257d89e40f0bb1b654c622a15006565b326499476a6d50d82c90bd6b0fcd8b5c70557d534a58866851364e256606b22a134e4a
7
- data.tar.gz: e6fd89a89b2cae3cff85ea645feac1d9e26b6610305af90c4276d1b967352927272a62452adac95f271c22bf33a1e9b718100617a0f756d484d3f2db88a21da5
6
+ metadata.gz: b0960ae0595c55f024ec201113772e225087398cb24f30b63728d08712cbd2d80570a161b60b20f91f45de5948b977ed5bd647b6af783bcbb3d791390743ab40
7
+ data.tar.gz: 1e6a5753db64d820f8499170662a0677065ee3222257cc959bb688efeb5508d34c351c686be8272938b093ba3ac9a7423704732a3b347e0f83c4c385687dae57
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## [Unreleased]
2
- *no unreleased changes*
2
+ * no unreleased changes
3
+
4
+ ## 6.0.4 / 2022-03-14
5
+ ### Fixed
6
+ * bundle:update should commit code_safety.yml changes.
7
+
8
+ ## 6.0.3 / 2022-03-14
9
+ ### Added
10
+ * Add `bundle:update` rake task to update bundled gem files
11
+
12
+ ## 6.0.2 / 2022-01-14
13
+ ### Fixed
14
+ * Support Rails 7, Ruby 3.1
3
15
 
4
16
  ## 6.0.1 / 2021-07-09
5
17
  ### Fixed
data/code_safety.yml CHANGED
@@ -10,8 +10,8 @@ file safety:
10
10
  safe_revision: 0ce43640c417e174054f903fd82043948ebe8ccb
11
11
  ".github/workflows/test.yml":
12
12
  comments:
13
- reviewed_by: joshpencheon
14
- safe_revision: 366ef1122fa4502c25cba9e508c565989545ef25
13
+ reviewed_by: brian.shand
14
+ safe_revision: 65d59fe9bba9dc7d404f92b54a115b14e6697af9
15
15
  ".gitignore":
16
16
  comments:
17
17
  reviewed_by: josh.pencheon
@@ -27,7 +27,7 @@ file safety:
27
27
  CHANGELOG.md:
28
28
  comments:
29
29
  reviewed_by: brian.shand
30
- safe_revision: d4d4ea4d2dcdf68819e75cbdac1009b145740b22
30
+ safe_revision: 25fcab1b2df9476bfa294085a46073b218785c19
31
31
  CODE_OF_CONDUCT.md:
32
32
  comments:
33
33
  reviewed_by: timgentry
@@ -72,6 +72,10 @@ file safety:
72
72
  comments:
73
73
  reviewed_by: joshpencheon
74
74
  safe_revision: f25001ef74c44ab727eef5cb29cef9a54525d36f
75
+ gemfiles/Gemfile.rails70:
76
+ comments:
77
+ reviewed_by: brian.shand
78
+ safe_revision: 65d59fe9bba9dc7d404f92b54a115b14e6697af9
75
79
  lib/minitest/rake_ci.rb:
76
80
  comments:
77
81
  reviewed_by: josh.pencheon
@@ -222,12 +226,16 @@ file safety:
222
226
  safe_revision: ad38e92c6e56b9d81fdab10681d8f2924eeadf5a
223
227
  lib/ndr_dev_support/tasks.rb:
224
228
  comments:
225
- reviewed_by: josh.pencheon
226
- safe_revision: 2154aa7f32e731933ff6091b8f42b2b014028a6a
229
+ reviewed_by: brian.shand
230
+ safe_revision: 93f9ed210c6a19eee4884ea8a906067c65ee67f6
227
231
  lib/ndr_dev_support/version.rb:
228
232
  comments:
229
233
  reviewed_by: brian.shand
230
- safe_revision: d4d4ea4d2dcdf68819e75cbdac1009b145740b22
234
+ safe_revision: 25fcab1b2df9476bfa294085a46073b218785c19
235
+ lib/tasks/audit_bundle.rake:
236
+ comments:
237
+ reviewed_by: brian.shand
238
+ safe_revision: 9682c3eb39a98d5a5256732af647a8bd7750826b
231
239
  lib/tasks/audit_code.rake:
232
240
  comments: Identical to the version reviewed by josh.pencheon when contained within
233
241
  ndr_support
@@ -300,7 +308,7 @@ file safety:
300
308
  ndr_dev_support.gemspec:
301
309
  comments:
302
310
  reviewed_by: brian.shand
303
- safe_revision: 5cb6964bee8c7a7856193232f6b06653235a8309
311
+ safe_revision: 65d59fe9bba9dc7d404f92b54a115b14e6697af9
304
312
  test/daemon/ci_server_test.rb:
305
313
  comments:
306
314
  reviewed_by: josh.pencheon
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+ gemspec path: '..'
3
+
4
+ gem 'activesupport', '~> 7.0.0'
@@ -1,4 +1,5 @@
1
1
  load 'tasks/audit_code.rake'
2
+ load 'tasks/audit_bundle.rake'
2
3
  load 'tasks/ci/brakeman.rake'
3
4
  load 'tasks/ci/bundle_audit.rake'
4
5
  load 'tasks/ci/commit_cop.rake'
@@ -2,5 +2,5 @@
2
2
  # This defines the NdrDevSupport version. If you change it, rebuild and commit the gem.
3
3
  # Use "rake build" to build the gem, see rake -T for all bundler rake tasks (and our own).
4
4
  module NdrDevSupport
5
- VERSION = '6.0.1'.freeze
5
+ VERSION = '6.0.4'
6
6
  end
@@ -0,0 +1,171 @@
1
+ # A rake task to update the bundled version of a gem
2
+
3
+ # Assumes constant SAFETY_FILE and function repository_type are defined in another rake task.
4
+
5
+ namespace :bundle do
6
+ desc <<~USAGE
7
+ Update to a later version of a gem interactively.
8
+
9
+ Usage: bundle:update gem=rails [version=6.0.4.7]
10
+
11
+ Updates the bundled gem (e.g. rails) version to e.g. 6.0.4.7
12
+ and provides instructions for committing changes.
13
+ It will attempt to modify a hardcoded version in the Gemfile if necessary.
14
+ USAGE
15
+ task(:update) do
16
+ unless %w[git git-svn].include?(repository_type)
17
+ warn 'Error: Requires a git working copy. Aborting.'
18
+ exit 1
19
+ end
20
+
21
+ gem = ENV['gem']
22
+ if gem.blank? || gem !~ /\A[a-zA-Z0-9_.-]+\z/
23
+ warn "Error: missing or invalid required 'gem' parameter. Aborting.\n\n"
24
+ system('rake -D bundle:update')
25
+ exit 1
26
+ end
27
+
28
+ gem_list = Bundler.with_unbundled_env { `bundle exec gem list ^#{gem}$` }
29
+ # Needs to match e.g. "nokogiri (1.12.5 x86_64-darwin)"
30
+ old_gem_version = gem_list.match(/ \(([0-9.]+)( [a-z0-9_-]*)?\)$/).to_a[1]
31
+ unless old_gem_version
32
+ warn <<~MSG.chomp
33
+ Cannot determine gem version for gem=#{gem}. Aborting. Output from bundle exec gem list:
34
+ #{gem_list}
35
+ MSG
36
+ exit 1
37
+ end
38
+ puts "Old #{gem} version from bundle: #{old_gem_version}"
39
+
40
+ new_gem_version = ENV['version'].presence
41
+ if new_gem_version && new_gem_version !~ /\A[0-9.a-zA-Z-]+\z/
42
+ warn "Error: invalid 'version' parameter. Aborting.\n\n"
43
+ system('rake -D bundle:update')
44
+ exit 1
45
+ end
46
+
47
+ unless Bundler.with_unbundled_env { system('bundle check 2> /dev/null') }
48
+ warn('Error: bundle check fails before doing anything.')
49
+ warn('Please clean up the Gemfile before running this. Aborting.')
50
+ exit 1
51
+ end
52
+
53
+ if gem == 'rails'
54
+ # If updating Rails and using activemodel-caution, prompt to put
55
+ # activemodel-caution gem in place, unless it's already installed for this rails version.
56
+ activemodel_caution = Bundler.
57
+ with_unbundled_env { `bundle exec gem list activemodel-caution` }.
58
+ match?(/^activemodel-caution \([0-9.]+\)$/)
59
+ if activemodel_caution && new_gem_version
60
+ file_pattern = "activemodel-caution-#{new_gem_version}*.gem"
61
+ unless Dir.glob("vendor/cache/#{file_pattern}").any? ||
62
+ Bundler.with_unbundled_env do
63
+ `gem list ^activemodel-caution$ -i -v #{new_gem_version}`
64
+ end.match?(/^true$/)
65
+ warn("Error: missing #{file_pattern} file in vendor/cache")
66
+ warn('Copy this file to vendor/cache, then run this command again.')
67
+ exit 1
68
+ end
69
+ end
70
+ end
71
+
72
+ related_gems = if gem == 'rails'
73
+ gem_list2 = Bundler.with_unbundled_env do
74
+ `bundle exec gem list`
75
+ end
76
+ gem_list2.split("\n").
77
+ grep(/[ (]#{old_gem_version}(.0)*[,)]/).
78
+ collect { |row| row.split.first }
79
+ else
80
+ [gem]
81
+ end
82
+ puts "Gems to update: #{related_gems.join(' ')}"
83
+
84
+ if new_gem_version
85
+ puts 'Tweaking Gemfile for new gem version'
86
+ cmd = ['sed', '-i', '.bak', '-E']
87
+ related_gems.each do |rgem|
88
+ cmd += ['-e', "s/(gem '(#{rgem})', '(~> )?)#{old_gem_version}(')/\\1#{new_gem_version}\\4/"]
89
+ end
90
+ cmd += %w[Gemfile]
91
+ system(*cmd)
92
+ File.delete('Gemfile.bak')
93
+
94
+ system('git diff Gemfile')
95
+ end
96
+
97
+ cmd = "bundle update --conservative --minor #{related_gems.join(' ')}"
98
+ puts "Running: #{cmd}"
99
+ Bundler.with_unbundled_env do
100
+ system(cmd)
101
+ end
102
+
103
+ unless Bundler.with_unbundled_env { system('bundle check 2> /dev/null') }
104
+ warn <<~MSG
105
+ Error: bundle check fails after trying to update Rails version. Aborting.
106
+ You will need to check your working copy, especially Gemfile, Gemfile.lock, vendor/cache
107
+ MSG
108
+ exit 1
109
+ end
110
+
111
+ if File.exist?(SAFETY_FILE)
112
+ # Remove references to unused files in code_safety.yml
113
+ system('rake audit:tidy_code_safety_file')
114
+ end
115
+
116
+ gem_list = Bundler.with_unbundled_env { `bundle exec gem list ^#{gem}$` }
117
+ new_gem_version2 = gem_list.match(/ \(([0-9.]+)( [a-z0-9_-]*)?\)$/).to_a[1]
118
+
119
+ if new_gem_version && new_gem_version != new_gem_version2
120
+ puts <<~MSG
121
+ Error: Tried to update gem #{gem} to version #{new_gem_version} but ended up at version #{new_gem_version2}. Aborting.
122
+ You will need to check your working copy, especially Gemfile, Gemfile.lock, vendor/cache
123
+ Try running:
124
+ bundle exec rake bundle:update gem=#{gem} version=#{new_gem_version2}
125
+ MSG
126
+ exit 1
127
+ end
128
+
129
+ # At this point, we have successfully updated all the local files.
130
+ # All that remains is to set up a branch, if necessary, and inform the user what to commit.
131
+
132
+ puts "Looking for changed files using git status\n\n"
133
+ files_to_git_rm = `git status vendor/cache/|grep 'deleted: ' | \
134
+ grep -o ': .*' | sed -e 's/^: *//'`.split("\n")
135
+ files_to_git_add = `git status Gemfile Gemfile.lock code_safety.yml config/code_safety.yml| \
136
+ grep 'modified: ' | \
137
+ grep -o ': .*' | sed -e 's/^: *//'`.split("\n")
138
+ files_to_git_add += `git status vendor/cache|expand|grep '^\s*vendor/cache' | \
139
+ sed -e 's/^ *//'`.split("\n")
140
+
141
+ if files_to_git_rm.empty? && files_to_git_add.empty?
142
+ puts <<~MSG
143
+ No changes were made. Please manually update the Gemfile, run
144
+ bundle update --conservative --minor #{related_gems.join(' ')}
145
+ MSG
146
+ puts ' rake audit:tidy_code_safety_file' if File.exist?(SAFETY_FILE)
147
+ puts <<~MSG
148
+ then run tests and git rm / git add any changes
149
+ including vendor/cache Gemfile Gemfile.lock code_safety.yml
150
+ then git commit
151
+ MSG
152
+ exit
153
+ end
154
+
155
+ if repository_type == 'git'
156
+ # Check out a fresh branch, if a git working copy (but not git-svn)
157
+ branch_name = "#{gem}_#{new_gem_version2.gsub('.', '_')}"
158
+ system('git', 'checkout', '-b', branch_name) # Create a new git branch
159
+ end
160
+
161
+ puts <<~MSG
162
+ Gemfile updated. Please use "git status" and "git diff" to check the local changes,
163
+ manually add any additional platform-specific gems required (e.g. for nokogiri),
164
+ re-run tests locally, then run the following to commit the changes:
165
+
166
+ $ git rm #{files_to_git_rm.join(' ')}
167
+ $ git add #{files_to_git_add.join(' ')}
168
+ $ git commit -m '# Bump #{gem} to #{new_gem_version2}'
169
+ MSG
170
+ end
171
+ end
@@ -42,7 +42,7 @@ Gem::Specification.new do |spec|
42
42
  spec.add_dependency 'webdrivers', '>= 3.9'
43
43
 
44
44
  # CI server dependencies:
45
- spec.add_dependency 'activesupport', '< 7'
45
+ spec.add_dependency 'activesupport', '< 7.1'
46
46
  spec.add_dependency 'brakeman', '>= 4.7.1'
47
47
  spec.add_dependency 'bundler-audit'
48
48
  spec.add_dependency 'github-linguist'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndr_dev_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.1
4
+ version: 6.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-09 00:00:00.000000000 Z
11
+ date: 2022-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -226,14 +226,14 @@ dependencies:
226
226
  requirements:
227
227
  - - "<"
228
228
  - !ruby/object:Gem::Version
229
- version: '7'
229
+ version: '7.1'
230
230
  type: :runtime
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "<"
235
235
  - !ruby/object:Gem::Version
236
- version: '7'
236
+ version: '7.1'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: brakeman
239
239
  requirement: !ruby/object:Gem::Requirement
@@ -410,6 +410,7 @@ files:
410
410
  - gemfiles/Gemfile.rails52
411
411
  - gemfiles/Gemfile.rails60
412
412
  - gemfiles/Gemfile.rails61
413
+ - gemfiles/Gemfile.rails70
413
414
  - lib/minitest/rake_ci.rb
414
415
  - lib/minitest/rake_ci_plugin.rb
415
416
  - lib/ndr_dev_support.rb
@@ -449,6 +450,7 @@ files:
449
450
  - lib/ndr_dev_support/slack_message_publisher.rb
450
451
  - lib/ndr_dev_support/tasks.rb
451
452
  - lib/ndr_dev_support/version.rb
453
+ - lib/tasks/audit_bundle.rake
452
454
  - lib/tasks/audit_code.rake
453
455
  - lib/tasks/ci/brakeman.rake
454
456
  - lib/tasks/ci/bundle_audit.rake