ndr_dev_support 6.0.1 → 6.0.4

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: 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