bash-merge 2.0.3 → 2.0.5
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +33 -1
- data/README.md +31 -32
- data/lib/bash/merge/conflict_resolver.rb +40 -7
- data/lib/bash/merge/smart_merger.rb +1 -0
- data/lib/bash/merge/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +9 -9
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 143070616b47ff572ec71a20ce9e8be2549fbdaac8e00fb703de16598b143770
|
|
4
|
+
data.tar.gz: e11406b8fc7e8adf42b5f473c22fa5761e46ed13a300715b3012765753e1b472
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fb3bd78f3e13caddb7eee63fd32fa62d180ee99ede3d2a138ceb125e23df5ceb3e93dc2393413efc3fb5d3c38faa7136aca9584357ef1e85f435f315d99574ba
|
|
7
|
+
data.tar.gz: a1c7c1cf94ae0c103993356d525418384a6d2f13d5c878800487cd1839a3ce3e52206e9abb2b6b3ff8ba603dbe50af6c6eca75decc0e8b1ce3b06519ba1448e6
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,34 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [2.0.5] - 2026-02-01
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.0.5][2.0.5t]
|
|
36
|
+
- COVERAGE: 96.10% -- 518/539 lines in 11 files
|
|
37
|
+
- BRANCH COVERAGE: 74.72% -- 133/178 branches in 11 files
|
|
38
|
+
- 96.33% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- ConflictResolver now applies per-node-type preferences via `node_typing`.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- tree_haver v5.0.3
|
|
47
|
+
- ast-merge v4.0.5
|
|
48
|
+
|
|
49
|
+
## [2.0.4] - 2026-01-20
|
|
50
|
+
|
|
51
|
+
- TAG: [v2.0.4][2.0.4t]
|
|
52
|
+
- COVERAGE: 100.00% -- 25/25 lines in 1 files
|
|
53
|
+
- BRANCH COVERAGE: 100.00% -- 4/4 branches in 1 files
|
|
54
|
+
- 96.33% documented
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- Upgrade to [ast-merge v4.0.3](https://github.com/kettle-rb/ast-merge/releases/tag/v4.0.3)
|
|
59
|
+
- Upgrade to [tree_haver v5.0.2](https://github.com/kettle-rb/tree_haver/releases/tag/v5.0.2)
|
|
60
|
+
|
|
33
61
|
## [2.0.3] - 2026-01-11
|
|
34
62
|
|
|
35
63
|
- TAG: [v2.0.3][2.0.3t]
|
|
@@ -137,7 +165,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
137
165
|
|
|
138
166
|
### Security
|
|
139
167
|
|
|
140
|
-
[Unreleased]: https://github.com/kettle-rb/bash-merge/compare/v2.0.
|
|
168
|
+
[Unreleased]: https://github.com/kettle-rb/bash-merge/compare/v2.0.5...HEAD
|
|
169
|
+
[2.0.5]: https://github.com/kettle-rb/bash-merge/compare/v2.0.4...v2.0.5
|
|
170
|
+
[2.0.5t]: https://github.com/kettle-rb/bash-merge/releases/tag/v2.0.5
|
|
171
|
+
[2.0.4]: https://github.com/kettle-rb/bash-merge/compare/v2.0.3...v2.0.4
|
|
172
|
+
[2.0.4t]: https://github.com/kettle-rb/bash-merge/releases/tag/v2.0.4
|
|
141
173
|
[2.0.3]: https://github.com/kettle-rb/bash-merge/compare/v2.0.2...v2.0.3
|
|
142
174
|
[2.0.3t]: https://github.com/kettle-rb/bash-merge/releases/tag/v2.0.3
|
|
143
175
|
[2.0.2]: https://github.com/kettle-rb/bash-merge/compare/v2.0.1...v2.0.2
|
data/README.md
CHANGED
|
@@ -104,38 +104,38 @@ File.write("merged.sh", result.to_bash)
|
|
|
104
104
|
|
|
105
105
|
The `*-merge` gem family provides intelligent, AST-based merging for various file formats. At the foundation is [tree_haver][tree_haver], which provides a unified cross-Ruby parsing API that works seamlessly across MRI, JRuby, and TruffleRuby.
|
|
106
106
|
|
|
107
|
-
| Gem |
|
|
108
|
-
|
|
109
|
-
| [tree_haver][tree_haver] |
|
|
110
|
-
| [ast-merge][ast-merge] |
|
|
111
|
-
| [bash-merge][bash-merge] |
|
|
112
|
-
| [commonmarker-merge][commonmarker-merge] | [![Version][commonmarker-merge-gem-i]][commonmarker-merge-gem]
|
|
113
|
-
| [dotenv-merge][dotenv-merge] |
|
|
114
|
-
| [json-merge][json-merge] |
|
|
115
|
-
| [jsonc-merge][jsonc-merge] |
|
|
116
|
-
| [markdown-merge][markdown-merge] |
|
|
117
|
-
| [markly-merge][markly-merge] |
|
|
118
|
-
| [prism-merge][prism-merge] |
|
|
119
|
-
| [psych-merge][psych-merge] |
|
|
120
|
-
| [rbs-merge][rbs-merge] |
|
|
121
|
-
| [toml-merge][toml-merge] |
|
|
107
|
+
| Gem | Version / CI | Language<br>/ Format | Parser Backend(s) | Description |
|
|
108
|
+
|------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------:|----------------------|-------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
|
|
109
|
+
| [tree_haver][tree_haver] | [![Version][tree_haver-gem-i]][tree_haver-gem] <br/> [![CI][tree_haver-ci-i]][tree_haver-ci] | Multi | Supported Backends: MRI C, Rust, FFI, Java, Prism, Psych, Commonmarker, Markly, Citrus, Parslet | **Foundation**: Cross-Ruby adapter for parsing libraries (like Faraday for HTTP) |
|
|
110
|
+
| [ast-merge][ast-merge] | [![Version][ast-merge-gem-i]][ast-merge-gem] <br/> [![CI][ast-merge-ci-i]][ast-merge-ci] | Text | internal | **Infrastructure**: Shared base classes and merge logic for all `*-merge` gems |
|
|
111
|
+
| [bash-merge][bash-merge] | [![Version][bash-merge-gem-i]][bash-merge-gem] <br/> [![CI][bash-merge-ci-i]][bash-merge-ci] | Bash | [tree-sitter-bash][ts-bash] (via tree_haver) | Smart merge for Bash scripts |
|
|
112
|
+
| [commonmarker-merge][commonmarker-merge] | [![Version][commonmarker-merge-gem-i]][commonmarker-merge-gem] <br/> [![CI][commonmarker-merge-ci-i]][commonmarker-merge-ci] | Markdown | [Commonmarker][commonmarker] (via tree_haver) | Smart merge for Markdown (CommonMark via comrak Rust) |
|
|
113
|
+
| [dotenv-merge][dotenv-merge] | [![Version][dotenv-merge-gem-i]][dotenv-merge-gem] <br/> [![CI][dotenv-merge-ci-i]][dotenv-merge-ci] | Dotenv | internal | Smart merge for `.env` files |
|
|
114
|
+
| [json-merge][json-merge] | [![Version][json-merge-gem-i]][json-merge-gem] <br/> [![CI][json-merge-ci-i]][json-merge-ci] | JSON | [tree-sitter-json][ts-json] (via tree_haver) | Smart merge for JSON files |
|
|
115
|
+
| [jsonc-merge][jsonc-merge] | [![Version][jsonc-merge-gem-i]][jsonc-merge-gem] <br/> [![CI][jsonc-merge-ci-i]][jsonc-merge-ci] | JSONC | [tree-sitter-jsonc][ts-jsonc] (via tree_haver) | ⚠️ Proof of concept; Smart merge for JSON with Comments |
|
|
116
|
+
| [markdown-merge][markdown-merge] | [![Version][markdown-merge-gem-i]][markdown-merge-gem] <br/> [![CI][markdown-merge-ci-i]][markdown-merge-ci] | Markdown | [Commonmarker][commonmarker] / [Markly][markly] (via tree_haver), [Parslet][parslet] | **Foundation**: Shared base for Markdown mergers with inner code block merging |
|
|
117
|
+
| [markly-merge][markly-merge] | [![Version][markly-merge-gem-i]][markly-merge-gem] <br/> [![CI][markly-merge-ci-i]][markly-merge-ci] | Markdown | [Markly][markly] (via tree_haver) | Smart merge for Markdown (CommonMark via cmark-gfm C) |
|
|
118
|
+
| [prism-merge][prism-merge] | [![Version][prism-merge-gem-i]][prism-merge-gem] <br/> [![CI][prism-merge-ci-i]][prism-merge-ci] | Ruby | [Prism][prism] (`prism` std lib gem) | Smart merge for Ruby source files |
|
|
119
|
+
| [psych-merge][psych-merge] | [![Version][psych-merge-gem-i]][psych-merge-gem] <br/> [![CI][psych-merge-ci-i]][psych-merge-ci] | YAML | [Psych][psych] (`psych` std lib gem) | Smart merge for YAML files |
|
|
120
|
+
| [rbs-merge][rbs-merge] | [![Version][rbs-merge-gem-i]][rbs-merge-gem] <br/> [![CI][rbs-merge-ci-i]][rbs-merge-ci] | RBS | [tree-sitter-bash][ts-rbs] (via tree_haver), [RBS][rbs] (`rbs` std lib gem) | Smart merge for Ruby type signatures |
|
|
121
|
+
| [toml-merge][toml-merge] | [![Version][toml-merge-gem-i]][toml-merge-gem] <br/> [![CI][toml-merge-ci-i]][toml-merge-ci] | TOML | [Parslet + toml][toml], [Citrus + toml-rb][toml-rb], [tree-sitter-toml][ts-toml] (all via tree_haver) | Smart merge for TOML files |
|
|
122
122
|
|
|
123
123
|
#### Backend Platform Compatibility
|
|
124
124
|
|
|
125
125
|
tree_haver supports multiple parsing backends, but not all backends work on all Ruby platforms:
|
|
126
126
|
|
|
127
|
-
| Platform 👉️<br> TreeHaver Backend 👇️
|
|
128
|
-
|
|
129
|
-
| **MRI** ([ruby_tree_sitter][ruby_tree_sitter])
|
|
130
|
-
| **Rust** ([tree_stump][tree_stump])
|
|
131
|
-
| **FFI**
|
|
132
|
-
| **Java** ([jtreesitter][jtreesitter])
|
|
133
|
-
| **Prism**
|
|
134
|
-
| **Psych**
|
|
135
|
-
| **Citrus**
|
|
136
|
-
| **Parslet**
|
|
137
|
-
| **Commonmarker**
|
|
138
|
-
| **Markly**
|
|
127
|
+
| Platform 👉️<br> TreeHaver Backend 👇️ | MRI | JRuby | TruffleRuby | Notes |
|
|
128
|
+
|-------------------------------------------------|:---:|:-----:|:-----------:|----------------------------------------------------------------------------|
|
|
129
|
+
| **MRI** ([ruby_tree_sitter][ruby_tree_sitter]) | ✅ | ❌ | ❌ | C extension, MRI only |
|
|
130
|
+
| **Rust** ([tree_stump][tree_stump]) | ✅ | ❌ | ❌ | Rust extension via magnus/rb-sys, MRI only |
|
|
131
|
+
| **FFI** ([ffi][ffi]) | ✅ | ✅ | ❌ | TruffleRuby's FFI doesn't support `STRUCT_BY_VALUE` |
|
|
132
|
+
| **Java** ([jtreesitter][jtreesitter]) | ❌ | ✅ | ❌ | JRuby only, requires grammar JARs |
|
|
133
|
+
| **Prism** ([prism][prism]) | ✅ | ✅ | ✅ | Ruby parsing, stdlib in Ruby 3.4+ |
|
|
134
|
+
| **Psych** ([psych][psych]) | ✅ | ✅ | ✅ | YAML parsing, stdlib |
|
|
135
|
+
| **Citrus** ([citrus][citrus]) | ✅ | ✅ | ✅ | Pure Ruby PEG parser, no native dependencies |
|
|
136
|
+
| **Parslet** ([parslet][parslet]) | ✅ | ✅ | ✅ | Pure Ruby PEG parser, no native dependencies |
|
|
137
|
+
| **Commonmarker** ([commonmarker][commonmarker]) | ✅ | ❌ | ❓ | Rust extension for Markdown (via [commonmarker-merge][commonmarker-merge]) |
|
|
138
|
+
| **Markly** ([markly][markly]) | ✅ | ❌ | ❓ | C extension for Markdown (via [markly-merge][markly-merge]) |
|
|
139
139
|
|
|
140
140
|
**Legend**: ✅ = Works, ❌ = Does not work, ❓ = Untested
|
|
141
141
|
|
|
@@ -229,6 +229,7 @@ tree_haver supports multiple parsing backends, but not all backends work on all
|
|
|
229
229
|
[kettle-jem-ci]: https://github.com/kettle-rb/kettle-jem/actions/workflows/current.yml
|
|
230
230
|
[prism]: https://github.com/ruby/prism
|
|
231
231
|
[psych]: https://github.com/ruby/psych
|
|
232
|
+
[ffi]: https://github.com/ffi/ffi
|
|
232
233
|
[ts-json]: https://github.com/tree-sitter/tree-sitter-json
|
|
233
234
|
[ts-jsonc]: https://gitlab.com/WhyNotHugo/tree-sitter-jsonc
|
|
234
235
|
[ts-bash]: https://github.com/tree-sitter/tree-sitter-bash
|
|
@@ -243,6 +244,8 @@ tree_haver supports multiple parsing backends, but not all backends work on all
|
|
|
243
244
|
[ruby_tree_sitter]: https://github.com/Faveod/ruby-tree-sitter
|
|
244
245
|
[tree_stump]: https://github.com/joker1007/tree_stump
|
|
245
246
|
[jtreesitter]: https://central.sonatype.com/artifact/io.github.tree-sitter/jtreesitter
|
|
247
|
+
[citrus]: https://github.com/mjackson/citrus
|
|
248
|
+
[parslet]: https://github.com/kschiess/parslet
|
|
246
249
|
|
|
247
250
|
## 💡 Info you can shake a stick at
|
|
248
251
|
|
|
@@ -657,9 +660,7 @@ Support us with a monthly donation and help us continue our activities. \[[Becom
|
|
|
657
660
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
658
661
|
|
|
659
662
|
<!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
|
|
660
|
-
|
|
661
663
|
No backers yet. Be the first!
|
|
662
|
-
|
|
663
664
|
<!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
|
|
664
665
|
|
|
665
666
|
### Open Collective for Organizations
|
|
@@ -669,9 +670,7 @@ Become a sponsor and get your logo on our README on GitHub with a link to your s
|
|
|
669
670
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
670
671
|
|
|
671
672
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
|
|
672
|
-
|
|
673
673
|
No sponsors yet. Be the first!
|
|
674
|
-
|
|
675
674
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
|
|
676
675
|
|
|
677
676
|
[kettle-readme-backers]: https://github.com/kettle-rb/bash-merge/blob/main/exe/kettle-readme-backers
|
|
@@ -977,7 +976,7 @@ Thanks for RTFM. ☺️
|
|
|
977
976
|
[📌gitmoji]: https://gitmoji.dev
|
|
978
977
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
979
978
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
980
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
979
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.539-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
981
980
|
[🔐security]: SECURITY.md
|
|
982
981
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
983
982
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -13,14 +13,16 @@ module Bash
|
|
|
13
13
|
#
|
|
14
14
|
# @param template_analysis [FileAnalysis] Analyzed template file
|
|
15
15
|
# @param dest_analysis [FileAnalysis] Analyzed destination file
|
|
16
|
-
# @param preference [Symbol] Which version to prefer when
|
|
16
|
+
# @param preference [Symbol, Hash] Which version to prefer when
|
|
17
17
|
# nodes have matching signatures:
|
|
18
18
|
# - :destination (default) - Keep destination version (customizations)
|
|
19
19
|
# - :template - Use template version (updates)
|
|
20
20
|
# @param add_template_only_nodes [Boolean] Whether to add nodes only in template
|
|
21
21
|
# @param match_refiner [#call, nil] Optional match refiner for fuzzy matching
|
|
22
22
|
# @param options [Hash] Additional options for forward compatibility
|
|
23
|
-
|
|
23
|
+
# @param node_typing [Hash{Symbol,String => #call}, nil] Node typing configuration
|
|
24
|
+
# for per-node-type preferences
|
|
25
|
+
def initialize(template_analysis, dest_analysis, preference: :destination, add_template_only_nodes: false, match_refiner: nil, node_typing: nil, **options)
|
|
24
26
|
super(
|
|
25
27
|
strategy: :batch,
|
|
26
28
|
preference: preference,
|
|
@@ -30,6 +32,7 @@ module Bash
|
|
|
30
32
|
match_refiner: match_refiner,
|
|
31
33
|
**options
|
|
32
34
|
)
|
|
35
|
+
@node_typing = node_typing
|
|
33
36
|
@emitter = Emitter.new
|
|
34
37
|
end
|
|
35
38
|
|
|
@@ -98,11 +101,7 @@ module Bash
|
|
|
98
101
|
template_node = template_info[:node]
|
|
99
102
|
|
|
100
103
|
# Decide which to emit based on preference
|
|
101
|
-
|
|
102
|
-
emit_node(dest_node, @dest_analysis)
|
|
103
|
-
else
|
|
104
|
-
emit_node(template_node, @template_analysis)
|
|
105
|
-
end
|
|
104
|
+
emit_preferred_node(template_node, dest_node)
|
|
106
105
|
|
|
107
106
|
processed_dest_sigs << dest_sig
|
|
108
107
|
processed_template_sigs << dest_sig
|
|
@@ -131,6 +130,40 @@ module Bash
|
|
|
131
130
|
end
|
|
132
131
|
end
|
|
133
132
|
|
|
133
|
+
def emit_preferred_node(template_node, dest_node)
|
|
134
|
+
if preference_for_pair(template_node, dest_node) == :destination
|
|
135
|
+
emit_node(dest_node, @dest_analysis)
|
|
136
|
+
else
|
|
137
|
+
emit_node(template_node, @template_analysis)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def preference_for_pair(template_node, dest_node)
|
|
142
|
+
return @preference unless @preference.is_a?(Hash)
|
|
143
|
+
|
|
144
|
+
typed_template = apply_node_typing(template_node)
|
|
145
|
+
typed_dest = apply_node_typing(dest_node)
|
|
146
|
+
|
|
147
|
+
if Ast::Merge::NodeTyping.typed_node?(typed_template)
|
|
148
|
+
merge_type = Ast::Merge::NodeTyping.merge_type_for(typed_template)
|
|
149
|
+
return @preference.fetch(merge_type) { default_preference } if merge_type
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
if Ast::Merge::NodeTyping.typed_node?(typed_dest)
|
|
153
|
+
merge_type = Ast::Merge::NodeTyping.merge_type_for(typed_dest)
|
|
154
|
+
return @preference.fetch(merge_type) { default_preference } if merge_type
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
default_preference
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def apply_node_typing(node)
|
|
161
|
+
return node unless @node_typing
|
|
162
|
+
return node unless node
|
|
163
|
+
|
|
164
|
+
Ast::Merge::NodeTyping.process(node, @node_typing)
|
|
165
|
+
end
|
|
166
|
+
|
|
134
167
|
# Emit a single node to the emitter
|
|
135
168
|
# @param node [NodeWrapper] Node to emit
|
|
136
169
|
# @param analysis [FileAnalysis] Analysis for accessing source
|
data/lib/bash/merge/version.rb
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bash-merge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -46,7 +46,7 @@ dependencies:
|
|
|
46
46
|
version: '5.0'
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 5.0.
|
|
49
|
+
version: 5.0.3
|
|
50
50
|
type: :runtime
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,7 +56,7 @@ dependencies:
|
|
|
56
56
|
version: '5.0'
|
|
57
57
|
- - ">="
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 5.0.
|
|
59
|
+
version: 5.0.3
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: ast-merge
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,7 +66,7 @@ dependencies:
|
|
|
66
66
|
version: '4.0'
|
|
67
67
|
- - ">="
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 4.0.
|
|
69
|
+
version: 4.0.5
|
|
70
70
|
type: :runtime
|
|
71
71
|
prerelease: false
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -76,7 +76,7 @@ dependencies:
|
|
|
76
76
|
version: '4.0'
|
|
77
77
|
- - ">="
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: 4.0.
|
|
79
|
+
version: 4.0.5
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: version_gem
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -315,10 +315,10 @@ licenses:
|
|
|
315
315
|
- MIT
|
|
316
316
|
metadata:
|
|
317
317
|
homepage_uri: https://bash-merge.galtzo.com/
|
|
318
|
-
source_code_uri: https://github.com/kettle-rb/bash-merge/tree/v2.0.
|
|
319
|
-
changelog_uri: https://github.com/kettle-rb/bash-merge/blob/v2.0.
|
|
318
|
+
source_code_uri: https://github.com/kettle-rb/bash-merge/tree/v2.0.5
|
|
319
|
+
changelog_uri: https://github.com/kettle-rb/bash-merge/blob/v2.0.5/CHANGELOG.md
|
|
320
320
|
bug_tracker_uri: https://github.com/kettle-rb/bash-merge/issues
|
|
321
|
-
documentation_uri: https://www.rubydoc.info/gems/bash-merge/2.0.
|
|
321
|
+
documentation_uri: https://www.rubydoc.info/gems/bash-merge/2.0.5
|
|
322
322
|
funding_uri: https://github.com/sponsors/pboling
|
|
323
323
|
wiki_uri: https://github.com/kettle-rb/bash-merge/wiki
|
|
324
324
|
news_uri: https://www.railsbling.com/tags/bash-merge
|
|
@@ -347,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
347
347
|
- !ruby/object:Gem::Version
|
|
348
348
|
version: '0'
|
|
349
349
|
requirements: []
|
|
350
|
-
rubygems_version: 4.0.
|
|
350
|
+
rubygems_version: 4.0.5
|
|
351
351
|
specification_version: 4
|
|
352
352
|
summary: "☯️ Intelligent Bash script merging using tree-sitter AST analysis"
|
|
353
353
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|