geordi 2.0.0 → 2.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: 3f371a80f7bc536a88daf8b8d97bda49c835833433cb91b3765ba6d9e17da68f
4
- data.tar.gz: 4032f7043edffcd155188d030a96df7122e8507208687c28ad050d7bde4d9da1
3
+ metadata.gz: dd4118d5ea35ff6c548d5ad3f158410fd2ac83edda2b181be2454f8228946825
4
+ data.tar.gz: b114780373ad8673f40eab2c65412dd334eecc6d97e6786a523fa7a3d9017958
5
5
  SHA512:
6
- metadata.gz: 7db4044309628ecc8f965eb2f0e4b865e29421cf19c07dd5b74ddedd83f61a1f6f538f9643f6d0f5c8282f5250e3166e093e67dff2b9bf68c591da81ab3bbe25
7
- data.tar.gz: 4976e69ed1eaa0d32b177b578610aa10608f17d4a1bf363fecb93317426e784147824704adc314e4fe94da5a8228e3daa52d4c686b60781bba7c68d045237b77
6
+ metadata.gz: 4523d1f1c32f42ebdd15a9d66b032bf9f220b94835c4aa71f9e3e24a2675b5c6806cec3ea80f225a03d8640002fa229e044fed72cc9e6392d56413bc01ee371b
7
+ data.tar.gz: 77c57c948d4f95880e9f55211d6ab3e7a079ac2bb0e4c4b1e0757aa291facaa224f56899ff435a3b846273dd8c5390a564235e17625cecc71735226a62d7c5c9
data/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## 2.1.0 2019-02-25
10
+
11
+ ### Compatible changes
12
+ - Fixes [#59]: Removedb name prefix when reading whitelist
13
+ - Fixes [#62]: Provide better error messages on whitelist editing errors.
14
+ - Fixes [#63]: Allow explicit whitelisting of database names that would be considered derivative during db cleanup
15
+ - Fixes [#64]: Remove VISUAL and EDITOR from editor choices for DB whitelist editing
16
+
17
+ ## 2.0.0 2019-02-20
18
+
9
19
  ### Breaking changes
10
20
  - Pivotal Tracker discontinued API V3 and V4. We now use API V5, which has a client library that does not support Ruby
11
21
  version < 2.1 anymore (all other geordi commands will still work for older Ruby versions).
@@ -13,7 +23,7 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
13
23
 
14
24
  ### Compatible changes
15
25
  - Fixes [#54]: @solo features run first and are not skipped by accident on failures before
16
- - Fixes [#3]: Add spring support for RSpec
26
+ - Fixes [#03]: Add spring support for RSpec
17
27
  - Fixes [#53]: Integrate yarn integrity
18
28
  - Fixes [#52]: Remote dumps are transmitted compressed
19
29
 
@@ -47,8 +47,31 @@ HEREDOC
47
47
  db.sub!(@derivative_dbname, '')
48
48
  tmpfile_content.push(['drop', db])
49
49
  end
50
- whitelisted_dbs.each do |db|
51
- tmpfile_content.push(['keep', db])
50
+ warn_manual_whitelist = false
51
+ whitelisted_dbs.each do |db_name|
52
+ # Remove 'keep' word from whitelist entries. This is not normally required since geordi
53
+ # does not save 'keep' or 'drop' to the whitelist file on disk but rather saves a list
54
+ # of all whitelisted db names and just presents the keep/drop information while editing
55
+ # the whitelist to supply users a list of databases they can whitelist by changing the
56
+ # prefix to 'keep'. Everything prefixed 'drop' is not considered whitelisted and thus
57
+ # not written to the whitelist file on disk.
58
+ #
59
+ # However, if users manually edit their whitelist files they might use the keep/drop
60
+ # syntax they're familiar with.
61
+ if db_name.start_with? 'keep '
62
+ db_name.gsub!(/keep /, '')
63
+ db_name = db_name.split[1..-1].join(' ')
64
+ warn_manual_whitelist = true
65
+ end
66
+ tmpfile_content.push(['keep', db_name]) unless db_name.empty?
67
+ end
68
+ if warn_manual_whitelist
69
+ warn <<-ERROR_MSG.gsub(/^\s*/, '')
70
+ Your whitelist #{whitelist} seems to have been generated manually.
71
+ In that case, make sure to use only one database name per line and omit the 'keep' prefix."
72
+
73
+ Launching the editor.
74
+ ERROR_MSG
52
75
  end
53
76
  tmpfile_content.sort_by! { |k| k[1] }
54
77
  tmpfile_content.uniq!
@@ -64,8 +87,12 @@ HEREDOC
64
87
  lines = Geordi::Util.stripped_lines(wl_edited.read)
65
88
  lines.each do |line|
66
89
  next if line.start_with?('#')
67
- fail 'Invalid edit to whitelist file' unless line.split.length == 2
68
- fail 'Invalid edit to whitelist file' unless %w[keep drop k d].include? line.split[0]
90
+ unless line.split.length == 2
91
+ fail "Invalid edit to whitelist file: \`#{line}\` - Syntax is: ^[keep|drop] dbname$"
92
+ end
93
+ unless %w[keep drop k d].include? line.split.first
94
+ fail "Invalid edit to whitelist file: \`#{line}\` - must start with either drop or keep."
95
+ end
69
96
  db_status, db_name = line.split
70
97
  if db_status == 'keep'
71
98
  whitelisted_dbs.push db_name
@@ -223,7 +250,15 @@ HEREDOC
223
250
  else
224
251
  whitelist_content = Array.new
225
252
  end
226
- whitelist_content.include? database_name.sub(@derivative_dbname, '')
253
+ # Allow explicit whitelisting of derivative databases like projectname_test2
254
+ if whitelist_content.include? database_name
255
+ true
256
+ # whitelisting `projectname` also whitelists `projectname_test\d+`, `projectname_development`
257
+ elsif whitelist_content.include? database_name.sub(@derivative_dbname, '')
258
+ true
259
+ else
260
+ false
261
+ end
227
262
  end
228
263
 
229
264
  def filter_whitelisted(dbtype, database_list)
data/lib/geordi/util.rb CHANGED
@@ -82,7 +82,7 @@ module Geordi
82
82
 
83
83
  # try to guess user's favorite cli text editor
84
84
  def decide_texteditor
85
- %w[$VISUAL $EDITOR /usr/bin/editor vi].each do |texteditor|
85
+ %w[/usr/bin/editor vi].each do |texteditor|
86
86
  if cmd_exists? texteditor and texteditor.start_with? '$'
87
87
  return ENV[texteditor[1..-1]]
88
88
  elsif cmd_exists? texteditor
@@ -1,3 +1,3 @@
1
1
  module Geordi
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geordi
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-20 00:00:00.000000000 Z
11
+ date: 2019-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor