zapwhite 2.6.0 → 2.7.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
  SHA1:
3
- metadata.gz: 4d600950045fedd54e58ec96c8f16ae33fbb5b47
4
- data.tar.gz: 3930e8dbc432f14afc6261113ccaa831567e93a1
3
+ metadata.gz: 81bcca5ce52c55d266fdfa3cffde9ce3cd270669
4
+ data.tar.gz: 9b2c1de397485ca1897e159fc5872dbd56e2ddfe
5
5
  SHA512:
6
- metadata.gz: a060e4079adf9f52b35b91702c0ab9b51f0aa81d61bfb6cffaa9d27cd36b109e8c3dca519f52af13e5203f05f590ac915e78d4e2f5f1638d3738b1009bc9f1ca
7
- data.tar.gz: 70cedf47cf30f7ad4bd0014d78177841987f455e1f09725eea475ac4082dad9aa24fb7046d59029b6715ec9b344786e0f7bb8f4678b774cbad8e92ce2081ade9
6
+ metadata.gz: a72c6981d8c3bb449503bc2fad48f21d89c989f27d5cbe8ea0301ddb75409dee025ca69fcb4d441207e89039f74da1019712931beb7fb59f4a2edd30d746558a
7
+ data.tar.gz: de3cb47158d66835ae676bfabf4b8c4280a374aa9bdbad90994660de4791014cb2d111cb19cd52782ebae8fec8c7653bdefa39e5bf0d5c771beda9b7490fd009
data/bin/zapwhite CHANGED
@@ -6,6 +6,7 @@ require 'bundler/setup'
6
6
  require 'optparse'
7
7
  require 'reality/zapwhite'
8
8
 
9
+ @verbose = false
9
10
  @check_only = false
10
11
  @generate_gitattributes = true
11
12
  @exclude_patterns = []
@@ -33,6 +34,10 @@ OptionParser.new do |opts|
33
34
  opts.on('-r', '--rule RULE', 'Additional rule(s) (a.k.a. lines) to add when generating .gitattributes file.') do |rule|
34
35
  @rules << rule
35
36
  end
37
+
38
+ opts.on('-v', '--verbose', 'Print additional information during operation.') do
39
+ @verbose = true
40
+ end
36
41
  end.parse!
37
42
 
38
43
  unless ARGV.empty?
@@ -51,4 +56,22 @@ unless @exclude_patterns.empty?
51
56
  end
52
57
  end
53
58
 
59
+ if @verbose
60
+ puts "Base Directory: #{@base_directory}"
61
+ puts "Check for violations or fix violations: #{runner.check_only? ? 'check' : 'fix'}"
62
+ puts "Generate .gitattributes file?: #{runner.generate_gitattributes?}"
63
+ unless runner.additional_gitattribute_rules.empty?
64
+ puts 'Additional .gitattribute rules:'
65
+ runner.additional_gitattribute_rules.each do |rule|
66
+ puts " * #{rule}"
67
+ end
68
+ end
69
+ unless runner.exclude_patterns.empty?
70
+ puts 'Exclude patterns:'
71
+ runner.exclude_patterns.each do |pattern|
72
+ puts " * #{pattern}"
73
+ end
74
+ end
75
+ end
76
+
54
77
  exit runner.run
@@ -13,6 +13,7 @@
13
13
  #
14
14
 
15
15
  require 'reality/gitattributes'
16
+ require 'json'
16
17
 
17
18
  module Reality
18
19
  class Zapwhite
@@ -20,7 +21,7 @@ module Reality
20
21
  def initialize(base_directory)
21
22
  @base_directory = base_directory
22
23
  @attributes = Reality::Git::Attributes.parse(@base_directory)
23
- @exclude_patterns = %w(vendor/.* node_modules/.*)
24
+ @exclude_patterns = %w(vendor/.* node_modules/.*) + load_braid_mirrors
24
25
  @check_only = false
25
26
  @additional_gitattribute_rules = []
26
27
  end
@@ -102,6 +103,11 @@ module Reality
102
103
 
103
104
  private
104
105
 
106
+ def load_braid_mirrors
107
+ braid_file = "#{@base_directory}/.braids.json"
108
+ File.exist?(braid_file) ? JSON.parse(IO.read(braid_file)).keys : []
109
+ end
110
+
105
111
  def generate_gitattributes!
106
112
  attributes = Reality::Git::Attributes.new(@base_directory)
107
113
  template = create_template_gitattributes
@@ -179,5 +179,91 @@ TEXT
179
179
  end
180
180
  end
181
181
 
182
+ def test_verbose_mode
183
+ dir = create_git_repo do
184
+ write_file('README.md', "Hello\n")
185
+ end
186
+ in_dir(dir) do
187
+ output = run_command("#{ZAPWHITE_BIN} --generate-gitattributes --rule '*.bin -diff' --rule '*.rxt text' --verbose", 1)
188
+ assert_equal <<OUTPUT, output
189
+ Base Directory: #{dir}
190
+ Check for violations or fix violations: fix
191
+ Generate .gitattributes file?: true
192
+ Additional .gitattribute rules:
193
+ * *.bin -diff
194
+ * *.rxt text
195
+ Exclude patterns:
196
+ * vendor/.*
197
+ * node_modules/.*
198
+ Fixing: .gitattributes
199
+ OUTPUT
200
+ end
201
+ end
182
202
 
203
+ def test_braids_are_added_to_excludes
204
+ dir = create_git_repo do
205
+ write_file('README.md', "Hello\n")
206
+ write_file('.braids.json',<<BRAIDS_JSON)
207
+ {
208
+ "vendor/docs/way_of_stock": {
209
+ "url": "https://github.com/stocksoftware/way_of_stock.git",
210
+ "branch": "master",
211
+ "revision": "0405926c5b4229e7d1f605a65603df64b5667f2d"
212
+ },
213
+ "vendor/tools/buildr_plus": {
214
+ "url": "https://github.com/realityforge/buildr_plus.git",
215
+ "branch": "master",
216
+ "revision": "4a4a0666871861de1ddc7581a02d6d656702fa6b"
217
+ },
218
+ "vendor/tools/dbt": {
219
+ "branch": "master",
220
+ "revision": "554139d3ea275bd54949b9504090c77e4d39ba65",
221
+ "url": "https://github.com/realityforge/dbt.git"
222
+ },
223
+ "vendor/tools/domgen": {
224
+ "branch": "master",
225
+ "revision": "1da8f5d43f9c84ac234c6354af8717bcfde03f88",
226
+ "url": "https://github.com/realityforge/domgen.git"
227
+ },
228
+ "vendor/tools/kinjen": {
229
+ "url": "https://github.com/realityforge/kinjen.git",
230
+ "branch": "master",
231
+ "revision": "34a962de77918bc1a76f1fcf8c92fe6721d5b524"
232
+ },
233
+ "vendor/tools/redfish": {
234
+ "url": "https://github.com/realityforge/redfish.git",
235
+ "branch": "master",
236
+ "revision": "5e6bb18009e682c09631e1234c955373735d27ab"
237
+ },
238
+ "vendor/tools/resgen": {
239
+ "url": "https://github.com/realityforge/resgen.git",
240
+ "branch": "master",
241
+ "revision": "631a5aa371d3c6f2a68c95e5da3ca8e16a6ee0c7"
242
+ }
243
+ }
244
+ BRAIDS_JSON
245
+ end
246
+ in_dir(dir) do
247
+ output = run_command("#{ZAPWHITE_BIN} --generate-gitattributes --rule '*.bin -diff' --rule '*.rxt text' --verbose", 1)
248
+ assert_equal <<OUTPUT, output
249
+ Base Directory: #{dir}
250
+ Check for violations or fix violations: fix
251
+ Generate .gitattributes file?: true
252
+ Additional .gitattribute rules:
253
+ * *.bin -diff
254
+ * *.rxt text
255
+ Exclude patterns:
256
+ * vendor/.*
257
+ * node_modules/.*
258
+ * vendor/docs/way_of_stock
259
+ * vendor/tools/buildr_plus
260
+ * vendor/tools/dbt
261
+ * vendor/tools/domgen
262
+ * vendor/tools/kinjen
263
+ * vendor/tools/redfish
264
+ * vendor/tools/resgen
265
+ Fixing: .gitattributes
266
+ OUTPUT
267
+ end
268
+ end
183
269
  end
data/zapwhite.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{zapwhite}
5
- s.version = '2.6.0'
5
+ s.version = '2.7.0'
6
6
  s.platform = Gem::Platform::RUBY
7
7
 
8
8
  s.authors = ['Peter Donald']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zapwhite
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Donald
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
11
+ date: 2017-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitattributes