octocatalog-diff 1.0.1 → 1.0.2

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: c315a978c543c665c37c9e3d8baee4cd51bd8ad0
4
- data.tar.gz: b3ea77a256af869d688f3792aee560f9f582979c
3
+ metadata.gz: 0a6057ffec45d60dbe793f5b81170c1d00b7d1af
4
+ data.tar.gz: 158d57d91c2d57d3f796732b814f85394346f553
5
5
  SHA512:
6
- metadata.gz: eb2810e2f011003b2cf5a99ea043936a990e97311de88d401142965a34450c1b29147bc2d151f8bf7f410a168758b4b10a97700a2ec5cafa354fe8f7d5f0fe6e
7
- data.tar.gz: 2977a910bd86d03b634178b5333d33f3694d6a90b97890cfaaa7351169c84b1da83d6c3858a12c7d27c31597deb6c483a847e28f1bd9b88aa7873ddb9f2fda69
6
+ metadata.gz: 2ea4c161583582db60e6e89349ff4c2e2153080fc27a01b2b7a5f01af3ef920d52b69a1515c7f4c51329036c7949aea5ad7d97221e6a987a765240f4b5cc05e8
7
+ data.tar.gz: fbccb8d52fe1346f880584d95405b744e119528686846c7dfcd36d0e7087273c27c5703d90ad5a985b7fd1e6ef558e9b2b34c677d4508f52ecb791314166cb1b
data/.version CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.0.2
data/doc/CHANGELOG.md CHANGED
@@ -8,6 +8,13 @@
8
8
  </tr>
9
9
  </thead><tbody>
10
10
  <tr valign=top>
11
+ <td>1.0.2</td>
12
+ <td>2017-03-08</td>
13
+ <td>
14
+ <li><a href="https://github.com/github/octocatalog-diff/pull/91">#91</a>: `--no-truncate-details` option</li>
15
+ </td>
16
+ </tr>
17
+ <tr valign=top>
11
18
  <td>1.0.1</td>
12
19
  <td>2017-02-14</td>
13
20
  <td>
data/doc/optionsref.md CHANGED
@@ -59,6 +59,7 @@ Usage: octocatalog-diff [command line options]
59
59
  --from-enc PATH Path to ENC script (for the from catalog only)
60
60
  --to-enc PATH Path to ENC script (for the to catalog only)
61
61
  --[no-]display-detail-add Display parameters and other details for added resources
62
+ --[no-]truncate-details Truncate details with --display-detail-add
62
63
  --no-header Do not print a header
63
64
  --default-header Print default header with output
64
65
  --header STRING Specify header for output
@@ -1092,6 +1093,21 @@ These files must exist and be in Puppet catalog format. (<a href="../lib/octocat
1092
1093
  </td>
1093
1094
  </tr>
1094
1095
 
1096
+ <tr>
1097
+ <td valign=top>
1098
+ <pre><code>--truncate-details
1099
+ --no-truncate-details </code></pre>
1100
+ </td>
1101
+ <td valign=top>
1102
+ Truncate details with --display-detail-add
1103
+ </td>
1104
+ <td valign=top>
1105
+ When using `--display-detail-add` by default the details of any field will be truncated
1106
+ at 80 characters. Specify `--no-truncate-details` to display the full output. This option
1107
+ has no effect when `--display-detail-add` is not used. (<a href="../lib/octocatalog-diff/cli/options/truncate_details.rb">truncate_details.rb</a>)
1108
+ </td>
1109
+ </tr>
1110
+
1095
1111
  <tr>
1096
1112
  <td valign=top>
1097
1113
  <pre><code>--validate-references
@@ -168,13 +168,14 @@ module OctocatalogDiff
168
168
  result = []
169
169
  add_source_file_line_info(item: item, result: result, new_loc: new_loc, options: options, logger: logger)
170
170
  if options[:display_detail_add] && diff.key?('parameters')
171
+ limit = options.fetch(:truncate_details, true) ? 80 : nil
171
172
  result << "+ #{item} =>".green
172
173
  result << ' parameters =>'.green
173
174
  result.concat(
174
175
  diff_two_hashes_with_diffy(
175
176
  depth: 1,
176
177
  hash2: Hash[diff['parameters'].sort], # Should work with somewhat older rubies too
177
- limit: 80,
178
+ limit: limit,
178
179
  strip_diff: true
179
180
  ).map(&:green)
180
181
  )
@@ -326,7 +327,7 @@ module OctocatalogDiff
326
327
  # @param depth [Fixnum] Depth, for correct indentation
327
328
  # @param limit [Fixnum] Maximum string length
328
329
  # @param strip_diff [Boolean] Strip leading +/-/" "
329
- # @return Array<String> Displayable result
330
+ # @return [Array<String>] Displayable result
330
331
  def self.diff_two_hashes_with_diffy(opts = {})
331
332
  depth = opts.fetch(:depth, 0)
332
333
  hash1 = opts.fetch(:hash1, {})
@@ -334,6 +335,9 @@ module OctocatalogDiff
334
335
  limit = opts[:limit]
335
336
  strip_diff = opts.fetch(:strip_diff, false)
336
337
 
338
+ # Special case: addition only, no truncation
339
+ return addition_only_no_truncation(depth, hash2) if hash1 == {} && limit.nil?
340
+
337
341
  json_old = stringify_for_diffy(hash1)
338
342
  json_new = stringify_for_diffy(hash2)
339
343
 
@@ -353,6 +357,30 @@ module OctocatalogDiff
353
357
  end
354
358
  end
355
359
 
360
+ # Special case: addition only, no truncation
361
+ # @param depth [Fixnum] Depth, for correct indentation
362
+ # @param hash [Hash] Added object
363
+ # @return [Array<String>] Displayable result
364
+ def self.addition_only_no_truncation(depth, hash)
365
+ result = []
366
+
367
+ # Single line strings
368
+ hash.keys.sort.map do |key|
369
+ next if hash[key] =~ /\n/
370
+ result << left_pad(2 * depth + 4, [key.inspect, ': ', hash[key].inspect].join('')).green
371
+ end
372
+
373
+ # Multi-line strings
374
+ hash.keys.sort.map do |key|
375
+ next if hash[key] !~ /\n/
376
+ result << left_pad(2 * depth + 4, [key.inspect, ': >>>'].join('')).green
377
+ result.concat hash[key].split(/\n/).map(&:green)
378
+ result << '<<<'.green
379
+ end
380
+
381
+ result
382
+ end
383
+
356
384
  # Limit length of a string
357
385
  # @param str [String] String
358
386
  # @param limit [Fixnum] Limit (0=unlimited)
@@ -37,6 +37,7 @@ module OctocatalogDiff
37
37
  opts[:compilation_from_dir] = options[:compilation_from_dir] || nil
38
38
  opts[:compilation_to_dir] = options[:compilation_to_dir] || nil
39
39
  opts[:display_detail_add] = options.fetch(:display_detail_add, false)
40
+ opts[:truncate_details] = options.fetch(:truncate_details, true)
40
41
  opts[:display_datatype_changes] = options.fetch(:display_datatype_changes, false)
41
42
 
42
43
  # Call appropriate display method
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # When using `--display-detail-add` by default the details of any field will be truncated
4
+ # at 80 characters. Specify `--no-truncate-details` to display the full output. This option
5
+ # has no effect when `--display-detail-add` is not used.
6
+ # @param parser [OptionParser object] The OptionParser argument
7
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
8
+ OctocatalogDiff::Cli::Options::Option.newoption(:truncate_details) do
9
+ has_weight 251
10
+
11
+ def parse(parser, options)
12
+ parser.on('--[no-]truncate-details', 'Truncate details with --display-detail-add') do |x|
13
+ options[:truncate_details] = x
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octocatalog-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub, Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-02-14 00:00:00.000000000 Z
12
+ date: 2017-03-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: diffy
@@ -381,6 +381,7 @@ files:
381
381
  - lib/octocatalog-diff/cli/options/storeconfigs.rb
382
382
  - lib/octocatalog-diff/cli/options/suppress_absent_file_details.rb
383
383
  - lib/octocatalog-diff/cli/options/to_from_branch.rb
384
+ - lib/octocatalog-diff/cli/options/truncate_details.rb
384
385
  - lib/octocatalog-diff/cli/options/validate_references.rb
385
386
  - lib/octocatalog-diff/cli/printer.rb
386
387
  - lib/octocatalog-diff/errors.rb