kettle-drift 1.0.0 → 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
  SHA256:
3
- metadata.gz: eb48282d5357d233bf628b5a7a75e5d4c0cb1e1e31ab4d07844fdeed4e91507c
4
- data.tar.gz: a08145033bf8c8073709e42880078f0908c198685c53307fd28c46b41f456ce8
3
+ metadata.gz: d5fcd44d3230a87f30015bf2a4a8712f957fae6b16d3224bf944ff5ab8a1205e
4
+ data.tar.gz: 1d32fbb029578f6e803eb386228f0824a00da3b14c7eff442fd14225806edc58
5
5
  SHA512:
6
- metadata.gz: a47efec094d7e9126b5cdd77c361e356e9b19ec7bc22a549f77aa289b69dc5e10898da561183f5f46f211e4930e6b03f691496b8de1211835420546abb65a6a9
7
- data.tar.gz: 3f9da774f773f14fb3576c74864055841d88c367ffc2f4d2e74264591de04823e20888260854b1dde6ce599cca90a78540a09a77fc8e31eb44ea05e48344e6bd
6
+ metadata.gz: 07d22f1a6ff858603dcb43e58b7398ce3b87f70349a876b4da8a89ddba3db535dc0dcd84dcef5f877fa2e8620fa478f1f435d42617f5dc52cbbc3f10c07dd30d
7
+ data.tar.gz: ae0d7068450c4c95c037238164fa4b6aaa584e5c3a3ad4d93bd28504e92e77705b894675494c0bacd329df860de2186728ee7b59d8b4798f7ce3e63bf48ac215
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -28,10 +28,33 @@ Please file a bug if you notice a violation of semantic versioning.
28
28
 
29
29
  ### Fixed
30
30
 
31
+ ### Security
32
+
33
+ ## [1.0.2] - 2026-06-03
34
+
35
+ - TAG: [v1.0.2][1.0.2t]
36
+ - COVERAGE: 83.98% -- 430/512 lines in 13 files
37
+ - BRANCH COVERAGE: 65.84% -- 133/202 branches in 13 files
38
+ - 33.01% documented
39
+
40
+ ### Fixed
41
+
42
+ - Suppressed warning/report output when current duplicate drift exactly matches
43
+ the checked-in lockfile baseline.
44
+
45
+ ## [1.0.1] - 2026-05-28
46
+
47
+ - TAG: [v1.0.1][1.0.1t]
48
+ - COVERAGE: 84.12% -- 429/510 lines in 13 files
49
+ - BRANCH COVERAGE: 65.84% -- 133/202 branches in 13 files
50
+ - 32.35% documented
51
+
52
+ ### Fixed
53
+
31
54
  - Prevented the Rakefile template hook from adding a second trailing newline
32
55
  when refreshing the kettle-drift task block.
33
-
34
- ### Security
56
+ - Inserted the kettle-drift Rakefile task block after the complete guarded
57
+ `kettle-dev` block so templating does not corrupt destination Rakefiles.
35
58
 
36
59
  ## [1.0.0] - 2026-05-24
37
60
 
@@ -44,6 +67,10 @@ Please file a bug if you notice a violation of semantic versioning.
44
67
 
45
68
  - Initial release
46
69
 
47
- [Unreleased]: https://github.com/kettle-rb/kettle-drift/compare/v1.0.0...HEAD
70
+ [Unreleased]: https://github.com/kettle-rb/kettle-drift/compare/v1.0.2...HEAD
71
+ [1.0.2]: https://github.com/kettle-rb/kettle-drift/compare/v1.0.1...v1.0.2
72
+ [1.0.2t]: https://github.com/kettle-rb/kettle-drift/releases/tag/v1.0.2
73
+ [1.0.1]: https://github.com/kettle-rb/kettle-drift/compare/v1.0.0...v1.0.1
74
+ [1.0.1t]: https://github.com/kettle-rb/kettle-drift/releases/tag/v1.0.1
48
75
  [1.0.0]: https://github.com/kettle-rb/kettle-drift/compare/bd038cd14dc083203b58f8fee359e63d6feeaaca...v1.0.0
49
76
  [1.0.0t]: https://github.com/kettle-rb/kettle-drift/releases/tag/v1.0.0
data/CONTRIBUTING.md CHANGED
@@ -102,11 +102,32 @@ Git hooks and commit message helpers (exe/kettle-commit-msg)
102
102
  - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
103
103
  - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
104
104
 
105
+ Git diff driver setup
106
+ - Local setup writes repository `.gitattributes` entries and local Git `diff.smorg-*` command config so this checkout uses StructuredMerge semantic diffs.
107
+ - Global setup registers `diff.smorg-*` commands once in the user Git config; use it when you work across several StructuredMerge-enabled repositories.
108
+ - Include-file setup writes `.git/smorg/config` and includes it from local Git config, keeping command registrations out of the repository files.
109
+ - Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
110
+
111
+ ```console
112
+ K_JEM_TEMPLATING=true bundle exec kettle-jem install
113
+ ```
114
+
115
+ Troubleshooting Git diffs
116
+ - Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
117
+ - Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
118
+ - If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
119
+ - To remove managed local entries, run `K_JEM_TEMPLATING=true bundle exec kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
120
+
105
121
  For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
106
122
 
107
123
  ## Appraisals
108
124
 
109
125
  From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
126
+ Generated appraisal and CI workflow floors are controlled by `ruby.test_minimum`
127
+ in `.structuredmerge/kettle-jem.yml`; this project was templated with `ruby.test_minimum: 3.2.0`.
128
+ That value describes the lowest Ruby version expected to run the test/development
129
+ toolchain, and it may be higher than the gemspec runtime floor.
130
+
110
131
  They are created and updated with the commands:
111
132
 
112
133
  ```console
data/README.md CHANGED
@@ -1,19 +1,10 @@
1
- [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-floss-i]][🖼️galtzo-floss] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![kettle-rb Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-rb-i]][🖼️kettle-rb] [![kettle-drift Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-rb-kettle-drift-i]][🖼️kettle-rb-kettle-drift]
1
+ <a href="https://github.com/kettle-rb"><img alt="kettle-rb Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-rb/avatar-128px.svg" width="12%" align="right"/></a> <a href="https://github.com/kettle-rb/kettle-drift"><img alt="kettle-drift Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-rb/kettle-drift/avatar-128px.svg" width="12%" align="right"/></a>
2
2
 
3
- [🖼️galtzo-floss-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg
4
- [🖼️galtzo-floss]: https://discord.gg/3qme4XHNKN
5
- [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg
6
- [🖼️ruby-lang]: https://www.ruby-lang.org/
7
- [🖼️kettle-rb-i]: https://logos.galtzo.com/assets/images/kettle-rb/avatar-128px.svg
8
- [🖼️kettle-rb]: https://github.com/kettle-rb
9
- [🖼️kettle-rb-kettle-drift-i]: https://logos.galtzo.com/assets/images/kettle-rb/kettle-drift/avatar-128px.svg
10
- [🖼️kettle-rb-kettle-drift]: https://github.com/kettle-rb/kettle-drift
3
+ # 🍲 Kettle::Drift
11
4
 
12
- # 🔮 Kettle::Drift
5
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
13
6
 
14
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL]
15
-
16
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-floss], as I may have missed the [discord notification][🖼️galtzo-floss].
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
17
8
 
18
9
  ---
19
10
 
@@ -28,7 +19,7 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
28
19
 
29
20
  </details>
30
21
 
31
- ## 🌻 Synopsis
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
32
23
 
33
24
  `kettle-drift` tracks repeated adjacent-line chunks that usually signal
34
25
  template drift or copy/paste corruption. When it is injected into a project by
@@ -55,6 +46,10 @@ the whole repository.
55
46
  ### Compatibility
56
47
 
57
48
  Compatible with MRI Ruby 3.2.0+, and concordant releases of JRuby, and TruffleRuby.
49
+ CI workflows and Appraisals are generated for MRI Ruby 3.2.0+.
50
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
51
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
52
+ not practical for the current toolchain.
58
53
 
59
54
  | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
60
55
  |------------------------------------------------|--------------------------------------------------------|
@@ -280,6 +275,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
280
275
 
281
276
  ### Please give the project a star ⭐ ♥.
282
277
 
278
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
279
+
283
280
  Thanks for RTFM. ☺️
284
281
 
285
282
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
@@ -382,8 +379,6 @@ Thanks for RTFM. ☺️
382
379
  [🏀codecovi]: https://codecov.io/gh/kettle-rb/kettle-drift/graph/badge.svg
383
380
  [🏀coveralls]: https://coveralls.io/github/kettle-rb/kettle-drift?branch=main
384
381
  [🏀coveralls-img]: https://coveralls.io/repos/github/kettle-rb/kettle-drift/badge.svg?branch=main
385
- [🖐codeQL]: https://github.com/kettle-rb/kettle-drift/security/code-scanning
386
- [🖐codeQL-img]: https://github.com/kettle-rb/kettle-drift/actions/workflows/codeql-analysis.yml/badge.svg
387
382
  [🚎ruby-3.2-wf]: https://github.com/kettle-rb/kettle-drift/actions/workflows/ruby-3.2.yml
388
383
  [🚎ruby-3.3-wf]: https://github.com/kettle-rb/kettle-drift/actions/workflows/ruby-3.3.yml
389
384
  [🚎ruby-3.4-wf]: https://github.com/kettle-rb/kettle-drift/actions/workflows/ruby-3.4.yml
@@ -444,7 +439,7 @@ Thanks for RTFM. ☺️
444
439
  [📌gitmoji]: https://gitmoji.dev
445
440
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
446
441
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
447
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.483-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
442
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.512-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
448
443
  [🔐security]: https://github.com/kettle-rb/kettle-drift/blob/main/SECURITY.md
449
444
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
450
445
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -453,6 +448,7 @@ Thanks for RTFM. ☺️
453
448
  [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only-259D6C.svg
454
449
  [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
455
450
  [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-✗-C0392B.svg?style=flat&logo=Apache
451
+
456
452
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
457
453
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
458
454
  [🚎yard-current]: http://rubydoc.info/gems/kettle-drift
@@ -469,9 +465,9 @@ Thanks for RTFM. ☺️
469
465
  | Field | Value |
470
466
  |---|---|
471
467
  | Package | kettle-drift |
472
- | Description | 🔮 Kettle::Drift tracks repeated adjacent-line chunks that usually signal template drift or copy/paste corruption. |
468
+ | Description | 🍲 Kettle::Drift tracks repeated adjacent-line chunks that usually signal template drift or copy/paste corruption. |
473
469
  | Homepage | https://github.com/kettle-rb/kettle-drift |
474
- | Source | https://github.com/kettle-rb/kettle-drift/tree/v1.0.0 |
470
+ | Source | https://github.com/kettle-rb/kettle-drift/tree/v1.0.1 |
475
471
  | License | `AGPL-3.0-only` |
476
472
  | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/kettle-rb, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/kettle-drift, https://www.buymeacoffee.com/pboling |
477
473
  <!-- kettle-jem:metadata:end -->
data/SECURITY.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Version | Supported |
6
6
  |----------|-----------|
7
- | 1.latest | ✅ |
7
+ | 1.0.latest | ✅ |
8
8
 
9
9
  ## Security contact information
10
10
 
@@ -20,8 +20,8 @@ module Kettle
20
20
  mode: options.fetch(:mode),
21
21
  )
22
22
 
23
- if outcome.clean?
24
- puts "[kettle-drift] ✅ No duplicate drift detected (min_chars=#{options[:min_chars]}, files=#{outcome.files.size}, baseline=#{outcome.baseline_set.size})"
23
+ if outcome.clean? || outcome.diff.state == :no_changes
24
+ puts "[kettle-drift] ✅ No new duplicate drift detected (min_chars=#{options[:min_chars]}, files=#{outcome.files.size}, baseline=#{outcome.baseline_set.size})"
25
25
  else
26
26
  puts "[kettle-drift] ⚠️ #{outcome.warning_count} drift warning(s) across #{outcome.results.size} unique chunk(s) (files=#{outcome.files.size}, baseline=#{outcome.baseline_set.size})"
27
27
  puts "[kettle-drift] 📄 Report: #{Kettle::Drift.display_path(outcome.json_path)}" if outcome.json_path
@@ -67,14 +67,60 @@ module Kettle
67
67
 
68
68
  def insert_snippet(content)
69
69
  lines = content.lines
70
- require_index = lines.rindex { |line| line.match?(/^\s*require\s+["']kettle\/dev["']/) }
71
- if require_index
72
- lines.insert(require_index + 1, "\n", RAKEFILE_SNIPPET, "\n")
70
+ insert_after_line = kettle_dev_anchor_end_line(content)
71
+ if insert_after_line
72
+ lines.insert(insert_after_line, "\n", RAKEFILE_SNIPPET, "\n")
73
73
  lines.join
74
74
  else
75
75
  [content.rstrip, "", RAKEFILE_SNIPPET.rstrip, ""].join("\n")
76
76
  end
77
77
  end
78
+
79
+ def kettle_dev_anchor_end_line(content)
80
+ prism_kettle_dev_anchor_end_line(content) || require_kettle_dev_line(content)
81
+ end
82
+
83
+ def prism_kettle_dev_anchor_end_line(content)
84
+ require "prism"
85
+ result = Prism.parse(content.to_s)
86
+ return unless result.success?
87
+
88
+ top_level_nodes = result.value.statements&.body.to_a
89
+ anchor_node = top_level_nodes.reverse.find { |node| contains_kettle_dev_require?(node) }
90
+ anchor_node&.location&.end_line
91
+ rescue LoadError
92
+ nil
93
+ end
94
+
95
+ def contains_kettle_dev_require?(node)
96
+ return false unless node.respond_to?(:child_nodes)
97
+ return true if kettle_dev_require_call?(node)
98
+
99
+ node.child_nodes.compact.any? { |child| contains_kettle_dev_require?(child) }
100
+ end
101
+
102
+ def kettle_dev_require_call?(node)
103
+ return false unless node.is_a?(Prism::CallNode)
104
+ return false unless node.name == :require
105
+
106
+ node.arguments&.arguments.to_a.any? do |argument|
107
+ argument.is_a?(Prism::StringNode) && argument.unescaped == "kettle/dev"
108
+ end
109
+ end
110
+
111
+ # This fallback is intentionally line-based because it is only used when
112
+ # Prism is unavailable in the templating runtime.
113
+ def require_kettle_dev_line(content)
114
+ lines = content.lines
115
+ require_index = lines.rindex { |line| line.strip == 'require "kettle/dev"' || line.strip == "require 'kettle/dev'" }
116
+ return unless require_index
117
+
118
+ block_start = lines[0..require_index].rindex { |line| line.strip == "begin" }
119
+ return require_index + 1 unless block_start
120
+
121
+ block_end = lines[block_start..].to_a.index { |line| line.strip == "end" }
122
+ block_end ? block_start + block_end + 1 : require_index + 1
123
+ end
78
124
  end
79
125
  end
80
126
  end
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Drift
5
5
  module Version
6
- VERSION = "1.0.0"
6
+ VERSION = "1.0.2"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
data/lib/kettle/drift.rb CHANGED
@@ -113,8 +113,15 @@ module Kettle
113
113
  results = Kettle::Drift::DuplicateLineValidator.subtract_baseline(results, baseline_set: baseline_set)
114
114
  warning_count = Kettle::Drift::DuplicateLineValidator.warning_count(results)
115
115
 
116
+ process_result = Kettle::Drift::Process.new(
117
+ project_root: expanded_project_root,
118
+ lock_path: expanded_lock_path,
119
+ mode: mode,
120
+ results: results,
121
+ printer_class: printer_class,
122
+ ).run
116
123
  expanded_json_path = nil
117
- unless results.empty?
124
+ if write_json_report?(results, process_result.diff)
118
125
  expanded_json_path = if json_path
119
126
  File.expand_path(json_path, expanded_project_root)
120
127
  else
@@ -123,14 +130,6 @@ module Kettle
123
130
  Kettle::Drift::DuplicateLineValidator.write_json(results, expanded_json_path)
124
131
  end
125
132
 
126
- process_result = Kettle::Drift::Process.new(
127
- project_root: expanded_project_root,
128
- lock_path: expanded_lock_path,
129
- mode: mode,
130
- results: results,
131
- printer_class: printer_class,
132
- ).run
133
-
134
133
  Kettle::Drift::Outcome.new(
135
134
  project_root: expanded_project_root,
136
135
  files: selected_files,
@@ -145,6 +144,10 @@ module Kettle
145
144
  exit_code: process_result.exit_code,
146
145
  )
147
146
  end
147
+
148
+ def write_json_report?(results, diff)
149
+ !results.empty? && diff.state != :no_changes
150
+ end
148
151
  end
149
152
  end
150
153
  end
@@ -6,4 +6,3 @@ module Kettle
6
6
  VERSION: String
7
7
  end
8
8
  end
9
-
data.tar.gz.sig CHANGED
@@ -1,3 +1,3 @@
1
- �L���*��a���p��;��g
2
- �?*�*�ĭps�+pSp_;GdE�`�S��!�����$J?fp����w ��8�ޜ@Ⱥ��Yy�3n큧�x�,�I#�heC�������>�e,z��P�O�a���� w��e��kT�����0ы���6� ����
3
- bNɝn��%�ܚ��L�9̿����E�_;�g)͟�P�)гqS�� �ˇ�Zm����3
1
+ x����x�&�� ��c��B�/��Iɹ`�ޡ9���D%��4!��;NG9d9��m��Ü]+�x�$j˲�����P
2
+ YÍS ���2:k�̓��gu���u�������A0�1i�D~ʛD��(I_p����H/!��z�NS��1�)@Uyh�-Ix�(P��*�|�= q���{
3
+ ��"�n��)��)7>����rf��D��\3�O~�'�rf.�����Xa{�x�k�mB���]�n�eC
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-drift
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -64,6 +64,9 @@ dependencies:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '2.0'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 2.0.8
67
70
  type: :development
68
71
  prerelease: false
69
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,6 +74,9 @@ dependencies:
71
74
  - - "~>"
72
75
  - !ruby/object:Gem::Version
73
76
  version: '2.0'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 2.0.8
74
80
  - !ruby/object:Gem::Dependency
75
81
  name: bundler-audit
76
82
  requirement: !ruby/object:Gem::Requirement
@@ -148,7 +154,7 @@ dependencies:
148
154
  version: '2.0'
149
155
  - - ">="
150
156
  - !ruby/object:Gem::Version
151
- version: 2.0.0
157
+ version: 2.0.3
152
158
  type: :development
153
159
  prerelease: false
154
160
  version_requirements: !ruby/object:Gem::Requirement
@@ -158,7 +164,27 @@ dependencies:
158
164
  version: '2.0'
159
165
  - - ">="
160
166
  - !ruby/object:Gem::Version
161
- version: 2.0.0
167
+ version: 2.0.3
168
+ - !ruby/object:Gem::Dependency
169
+ name: turbo_tests2
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '3.1'
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: 3.1.1
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '3.1'
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 3.1.1
162
188
  - !ruby/object:Gem::Dependency
163
189
  name: ruby-progressbar
164
190
  requirement: !ruby/object:Gem::Requirement
@@ -199,21 +225,21 @@ dependencies:
199
225
  requirements:
200
226
  - - "~>"
201
227
  - !ruby/object:Gem::Version
202
- version: '1.0'
228
+ version: '2.0'
203
229
  - - ">="
204
230
  - !ruby/object:Gem::Version
205
- version: 1.0.3
231
+ version: 2.0.1
206
232
  type: :development
207
233
  prerelease: false
208
234
  version_requirements: !ruby/object:Gem::Requirement
209
235
  requirements:
210
236
  - - "~>"
211
237
  - !ruby/object:Gem::Version
212
- version: '1.0'
238
+ version: '2.0'
213
239
  - - ">="
214
240
  - !ruby/object:Gem::Version
215
- version: 1.0.3
216
- description: "\U0001F52E Kettle::Drift tracks repeated adjacent-line chunks that usually
241
+ version: 2.0.1
242
+ description: "\U0001F372 Kettle::Drift tracks repeated adjacent-line chunks that usually
217
243
  signal template drift or copy/paste corruption."
218
244
  email:
219
245
  - peter.boling@gmail.com
@@ -263,10 +289,10 @@ licenses:
263
289
  - AGPL-3.0-only
264
290
  metadata:
265
291
  homepage_uri: https://structuredmerge.org
266
- source_code_uri: https://github.com/kettle-rb/kettle-drift/tree/v1.0.0
267
- changelog_uri: https://github.com/kettle-rb/kettle-drift/blob/v1.0.0/CHANGELOG.md
292
+ source_code_uri: https://github.com/kettle-rb/kettle-drift/tree/v1.0.2
293
+ changelog_uri: https://github.com/kettle-rb/kettle-drift/blob/v1.0.2/CHANGELOG.md
268
294
  bug_tracker_uri: https://github.com/kettle-rb/kettle-drift/issues
269
- documentation_uri: https://www.rubydoc.info/gems/kettle-drift/1.0.0
295
+ documentation_uri: https://www.rubydoc.info/gems/kettle-drift/1.0.2
270
296
  funding_uri: https://github.com/sponsors/pboling
271
297
  wiki_uri: https://github.com/kettle-rb/kettle-drift/wiki
272
298
  news_uri: https://www.railsbling.com/tags/kettle-drift
@@ -274,7 +300,7 @@ metadata:
274
300
  rubygems_mfa_required: 'true'
275
301
  rdoc_options:
276
302
  - "--title"
277
- - "kettle-drift - \U0001F52E Detect duplicated adjacent lines introduced by template
303
+ - "kettle-drift - \U0001F372 Detect duplicated adjacent lines introduced by template
278
304
  drift."
279
305
  - "--main"
280
306
  - README.md
@@ -298,5 +324,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
298
324
  requirements: []
299
325
  rubygems_version: 4.0.10
300
326
  specification_version: 4
301
- summary: "\U0001F52E Detect duplicated adjacent lines introduced by template drift."
327
+ summary: "\U0001F372 Detect duplicated adjacent lines introduced by template drift."
302
328
  test_files: []
metadata.gz.sig CHANGED
Binary file