ndr_dev_support 6.0.2 → 6.1.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: 2a024102f34097eebbb099cd46d7a962238390cc3be9bea382308f0ae2615ec6
4
- data.tar.gz: '0938834d58be0cd0e9b0442fc280d8b2cdca3874d3d76767d35c42c617bc34f8'
3
+ metadata.gz: 67a32537a9f42f905530b37c03c4e98ddd4aa8436833e1ce38e4443701f8216d
4
+ data.tar.gz: cd6489387c3d8bd0af51b26e4315dcfd57b1592a46dda39e7e2e1e5f161d519d
5
5
  SHA512:
6
- metadata.gz: 7769eed298f1f78be229193b218d83377e81f9410535c28ff44ec241aea43ec55cf7796e762aa2c57dc18decd9daa56c1b1b00e98d258d9b6491ea7b27973e17
7
- data.tar.gz: 911e45911f29f14589f7ac63250b1bb1aa14541e76ed4022bb747d113e37aa62e470a326ae90628e3e5367d423f10e40b92bfc89d2177081c2ee34cc4846065e
6
+ metadata.gz: cf21a7b0849c34190f27024df4a1e50c11bc635681cba4dc4a3e6708c37a0b81400ef5810badf125cd65044cfc69eab543d2c531a378db5e0853eeba57ed4012
7
+ data.tar.gz: 229c84f00339e8435b75d2048e8d849092f50ce79e1a0d8f1964d575e89ec74e26b1b975d768ae422811d609b84a503d7014dcef95274ab626fd6c441e1212af
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  ## [Unreleased]
2
- * no unreleased changes
2
+ * No unreleased changes
3
+
4
+ ## 6.1.0 / 2022-04-28
5
+ ### Fixed
6
+ * CI: support Ruby 3.0
7
+
8
+ ### Changed
9
+ * Allow Ctrl-C to cleanly interrupt an idle daemon
10
+ * Drop support for Ruby 2.6
11
+
12
+ ## 6.0.5 / unreleased
13
+
14
+ ## 6.0.4 / 2022-03-14
15
+ ### Fixed
16
+ * bundle:update should commit code_safety.yml changes.
17
+
18
+ ## 6.0.3 / 2022-03-14
19
+ ### Added
20
+ * Add `bundle:update` rake task to update bundled gem files
3
21
 
4
22
  ## 6.0.2 / 2022-01-14
5
23
  ### Fixed
data/code_safety.yml CHANGED
@@ -27,7 +27,7 @@ file safety:
27
27
  CHANGELOG.md:
28
28
  comments:
29
29
  reviewed_by: brian.shand
30
- safe_revision: 773282057d09738cde2b4986c2e4a8a79ed40529
30
+ safe_revision: 25fcab1b2df9476bfa294085a46073b218785c19
31
31
  CODE_OF_CONDUCT.md:
32
32
  comments:
33
33
  reviewed_by: timgentry
@@ -226,12 +226,16 @@ file safety:
226
226
  safe_revision: ad38e92c6e56b9d81fdab10681d8f2924eeadf5a
227
227
  lib/ndr_dev_support/tasks.rb:
228
228
  comments:
229
- reviewed_by: josh.pencheon
230
- safe_revision: 2154aa7f32e731933ff6091b8f42b2b014028a6a
229
+ reviewed_by: brian.shand
230
+ safe_revision: 93f9ed210c6a19eee4884ea8a906067c65ee67f6
231
231
  lib/ndr_dev_support/version.rb:
232
232
  comments:
233
233
  reviewed_by: brian.shand
234
- safe_revision: 773282057d09738cde2b4986c2e4a8a79ed40529
234
+ safe_revision: 25fcab1b2df9476bfa294085a46073b218785c19
235
+ lib/tasks/audit_bundle.rake:
236
+ comments:
237
+ reviewed_by: brian.shand
238
+ safe_revision: 9682c3eb39a98d5a5256732af647a8bd7750826b
235
239
  lib/tasks/audit_code.rake:
236
240
  comments: Identical to the version reviewed by josh.pencheon when contained within
237
241
  ndr_support
@@ -105,7 +105,12 @@ module NdrDevSupport
105
105
 
106
106
  number_of_mini_sleeps.times do
107
107
  return if should_stop?
108
+
108
109
  sleep(LITTLE_SLEEP)
110
+ rescue Interrupt
111
+ # Ctrl-C should stop cleanly if used while the process is snoozing
112
+ @should_stop = true
113
+ return
109
114
  end
110
115
  end
111
116
  end
@@ -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.2'
5
+ VERSION = '6.1.0'
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
@@ -38,15 +38,17 @@ namespace :ci do
38
38
  if prometheus.exist?(name)
39
39
  prometheus.get(name)
40
40
  else
41
- prometheus.gauge(name, docstring, project: project)
41
+ labels = (label_set.keys + [:project]).uniq
42
+ prometheus.gauge(name, docstring: docstring, labels: labels,
43
+ preset_labels: { project: project })
42
44
  end
43
- gauge.set(label_set, value)
45
+ gauge.set(value, labels: label_set)
44
46
  else
45
47
  raise "Unknown metric type (#{metric.inspect})"
46
48
  end
47
49
  end
48
50
 
49
- client = Prometheus::Client::Push.new("rake-ci-#{project}", nil, gateway)
51
+ client = Prometheus::Client::Push.new(job: "rake-ci-#{project}", gateway: gateway)
50
52
 
51
53
  begin
52
54
  client.add(prometheus)
@@ -12,12 +12,13 @@ Gem::Specification.new do |spec|
12
12
  spec.homepage = 'https://github.com/PublicHealthEngland/ndr_dev_support'
13
13
  spec.license = 'MIT'
14
14
 
15
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(\.github|test|spec|features)/}) }
15
+ spec.files = `git ls-files -z`.split("\x0").
16
+ reject { |f| f.match(%r{^(\.github|test|spec|features)/}) }
16
17
  spec.bindir = 'exe'
17
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
19
  spec.require_paths = ['lib']
19
20
 
20
- spec.required_ruby_version = '>= 2.6'
21
+ spec.required_ruby_version = '>= 2.7'
21
22
 
22
23
  spec.add_dependency 'pry'
23
24
 
@@ -28,8 +29,8 @@ Gem::Specification.new do |spec|
28
29
  spec.add_dependency 'parser'
29
30
  spec.add_dependency 'rainbow'
30
31
  spec.add_dependency 'rubocop', '~> 1.7'
31
- spec.add_dependency 'rubocop-rake', '~> 0.5'
32
32
  spec.add_dependency 'rubocop-rails', '~> 2.9'
33
+ spec.add_dependency 'rubocop-rake', '~> 0.5'
33
34
  spec.add_dependency 'unicode-display_width', '>= 1.3.3'
34
35
 
35
36
  # Integration test dependencies:
@@ -46,7 +47,7 @@ Gem::Specification.new do |spec|
46
47
  spec.add_dependency 'brakeman', '>= 4.7.1'
47
48
  spec.add_dependency 'bundler-audit'
48
49
  spec.add_dependency 'github-linguist'
49
- spec.add_dependency 'prometheus-client', '~> 0.9.0'
50
+ spec.add_dependency 'prometheus-client', '~> 4.0.0'
50
51
  spec.add_dependency 'rugged'
51
52
  spec.add_dependency 'simplecov'
52
53
  spec.add_dependency 'with_clean_rbenv'
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.2
4
+ version: 6.1.0
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: 2022-01-14 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -81,33 +81,33 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.7'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop-rake
84
+ name: rubocop-rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.5'
89
+ version: '2.9'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.5'
96
+ version: '2.9'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rubocop-rails
98
+ name: rubocop-rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.9'
103
+ version: '0.5'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.9'
110
+ version: '0.5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: unicode-display_width
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -282,14 +282,14 @@ dependencies:
282
282
  requirements:
283
283
  - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: 0.9.0
285
+ version: 4.0.0
286
286
  type: :runtime
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: 0.9.0
292
+ version: 4.0.0
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: rugged
295
295
  requirement: !ruby/object:Gem::Requirement
@@ -450,6 +450,7 @@ files:
450
450
  - lib/ndr_dev_support/slack_message_publisher.rb
451
451
  - lib/ndr_dev_support/tasks.rb
452
452
  - lib/ndr_dev_support/version.rb
453
+ - lib/tasks/audit_bundle.rake
453
454
  - lib/tasks/audit_code.rake
454
455
  - lib/tasks/ci/brakeman.rake
455
456
  - lib/tasks/ci/bundle_audit.rake
@@ -480,7 +481,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
480
481
  requirements:
481
482
  - - ">="
482
483
  - !ruby/object:Gem::Version
483
- version: '2.6'
484
+ version: '2.7'
484
485
  required_rubygems_version: !ruby/object:Gem::Requirement
485
486
  requirements:
486
487
  - - ">="