zip-merge 7.1.1 → 7.1.3
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/README.md +2 -10
- data/lib/zip/merge/provider.rb +110 -0
- data/lib/zip/merge/version.rb +1 -1
- data/lib/zip/merge.rb +2 -0
- data/sig/zip/merge.rbs +13 -0
- data.tar.gz.sig +0 -0
- metadata +17 -16
- 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: ab8707f72ab19bcb5d7fa6ac1dff9e120b6359913377a27a0068fa25c7811550
|
|
4
|
+
data.tar.gz: ec42f4edba8322a35f933367b172b414a18aaa32af0af976b962214122c6dfb4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eb36f6b3bfd9e0a1c338c33a9772a57f8bd16f7e90eca6b27c1c339c6a88ece6508f6528af4e5a74d801e21bb9c0b2f85275e4bf03665ec495109984798be7c6
|
|
7
|
+
data.tar.gz: 275ba874d435f03ab9619940f2d8add76aac49c1ae9cb29278955b00c11c19b40d78c12353ec3e3f1aa57acc71d22332693899abe524adbf0d6d67726315df08
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -56,7 +56,7 @@ renderer.
|
|
|
56
56
|
|
|
57
57
|
### Compatibility
|
|
58
58
|
|
|
59
|
-
Compatible with MRI Ruby 4.0.0+,
|
|
59
|
+
Compatible with MRI Ruby 4.0.0+, JRuby, and TruffleRuby.
|
|
60
60
|
CI workflows and Appraisals are generated for MRI Ruby 4.0.0+.
|
|
61
61
|
This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
62
62
|
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
@@ -132,20 +132,12 @@ See [SECURITY.md][🔐security].
|
|
|
132
132
|
## 🤝 Contributing
|
|
133
133
|
|
|
134
134
|
If you need some ideas of where to help, you could work on adding more code coverage,
|
|
135
|
-
|
|
136
|
-
or use the gem and think about how it could be better.
|
|
135
|
+
check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
|
|
137
136
|
|
|
138
137
|
We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
|
|
139
138
|
|
|
140
139
|
See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
|
|
141
140
|
|
|
142
|
-
### Code Coverage
|
|
143
|
-
|
|
144
|
-
<details markdown="1">
|
|
145
|
-
<summary>Coverage service badges</summary>
|
|
146
|
-
|
|
147
|
-
</details>
|
|
148
|
-
|
|
149
141
|
## 📌 Versioning
|
|
150
142
|
|
|
151
143
|
This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Zip
|
|
4
|
+
module Merge
|
|
5
|
+
# Validates ZIP inputs while applying the safety-first opaque binary policy.
|
|
6
|
+
# rubocop:disable Metrics/MethodLength -- provider envelope is one public result contract
|
|
7
|
+
class Provider < Binary::Merge::Provider
|
|
8
|
+
PARSE_ERRORS = [RuntimeError, NoMethodError, TypeError, KeyError].freeze
|
|
9
|
+
|
|
10
|
+
def provider_id = 'ruby.zip'
|
|
11
|
+
def family = 'zip'
|
|
12
|
+
|
|
13
|
+
def capabilities
|
|
14
|
+
{
|
|
15
|
+
operations: Ast::Merge::ProviderContract::OPERATIONS,
|
|
16
|
+
dialects: %i[zip],
|
|
17
|
+
backends: [Zip::Merge::BACKEND_REFERENCE.id.to_sym],
|
|
18
|
+
profiles: %i[opaque_archive],
|
|
19
|
+
role: :workflow,
|
|
20
|
+
source_preservation: %i[exact_source opaque_conflict_retains_ours]
|
|
21
|
+
}.freeze
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def analyze(request)
|
|
25
|
+
inventory = parse(request.fetch(:source), :source, :analyze, request)
|
|
26
|
+
return inventory if provider_result?(inventory)
|
|
27
|
+
|
|
28
|
+
result(:analyze, request, analysis: inventory)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def diff2(request)
|
|
32
|
+
failure = validate_sources(request, :diff2, before_source: :before, after_source: :after)
|
|
33
|
+
failure || super
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def merge2(request)
|
|
37
|
+
failure = validate_sources(request, :merge2, current_source: :current, incoming_source: :incoming)
|
|
38
|
+
failure || super
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def merge3(request)
|
|
42
|
+
failure = validate_sources(
|
|
43
|
+
request,
|
|
44
|
+
:merge3,
|
|
45
|
+
base_source: :base,
|
|
46
|
+
ours_source: :ours,
|
|
47
|
+
theirs_source: :theirs
|
|
48
|
+
)
|
|
49
|
+
failure || super
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def validate_sources(request, operation, roles)
|
|
55
|
+
roles.each do |request_key, source_role|
|
|
56
|
+
parsed = parse(request.fetch(request_key), source_role, operation, request)
|
|
57
|
+
return parsed if provider_result?(parsed)
|
|
58
|
+
end
|
|
59
|
+
nil
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def parse(source, source_role, operation, request)
|
|
63
|
+
Zip::Merge.parse_zip_inventory(source)
|
|
64
|
+
rescue *PARSE_ERRORS => e
|
|
65
|
+
failure(
|
|
66
|
+
operation,
|
|
67
|
+
request,
|
|
68
|
+
category: :parse_error,
|
|
69
|
+
message: "Invalid ZIP #{source_role} source: #{e.message}",
|
|
70
|
+
source_role: source_role
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def provider_result?(value)
|
|
75
|
+
value.is_a?(Hash) && value[:schema] == Ast::Merge::ProviderContract::RESULT_SCHEMA
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def envelope(request, **fields)
|
|
79
|
+
{
|
|
80
|
+
provider: {
|
|
81
|
+
provider_id: provider_id,
|
|
82
|
+
family: family,
|
|
83
|
+
dialect: request[:dialect] || :zip,
|
|
84
|
+
backend: request[:backend],
|
|
85
|
+
package: 'zip-merge',
|
|
86
|
+
package_version: Zip::Merge::Version::VERSION
|
|
87
|
+
},
|
|
88
|
+
profile: { profile_id: request[:profile_id] || :opaque_archive }
|
|
89
|
+
}.merge(fields)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
# rubocop:enable Metrics/MethodLength
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Provider registration entry point.
|
|
97
|
+
module Zip
|
|
98
|
+
# ZIP provider registration.
|
|
99
|
+
module Merge
|
|
100
|
+
module_function
|
|
101
|
+
|
|
102
|
+
def merge_provider
|
|
103
|
+
@merge_provider ||= Provider.new
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def register_provider!
|
|
107
|
+
Ast::Merge.register_provider(merge_provider, replace: true)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
data/lib/zip/merge/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Zip
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = '7.1.
|
|
8
|
+
VERSION = '7.1.3'
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data/lib/zip/merge.rb
CHANGED
data/sig/zip/merge.rbs
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
module Zip
|
|
2
2
|
module Merge
|
|
3
|
+
class Provider < Binary::Merge::Provider
|
|
4
|
+
def provider_id: () -> String
|
|
5
|
+
def family: () -> String
|
|
6
|
+
def capabilities: () -> Hash[Symbol, untyped]
|
|
7
|
+
def analyze: (Hash[Symbol, untyped] request) -> Hash[Symbol, untyped]
|
|
8
|
+
def diff2: (Hash[Symbol, untyped] request) -> Hash[Symbol, untyped]
|
|
9
|
+
def merge2: (Hash[Symbol, untyped] request) -> Hash[Symbol, untyped]
|
|
10
|
+
def merge3: (Hash[Symbol, untyped] request) -> Hash[Symbol, untyped]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.merge_provider: () -> Provider
|
|
14
|
+
def self.register_provider!: () -> Hash[Symbol, untyped]
|
|
15
|
+
|
|
3
16
|
module Version
|
|
4
17
|
VERSION: String
|
|
5
18
|
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zip-merge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.1.
|
|
4
|
+
version: 7.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -43,28 +43,28 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - '='
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 7.1.
|
|
46
|
+
version: 7.1.3
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - '='
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 7.1.
|
|
53
|
+
version: 7.1.3
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: tree_haver
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - '='
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 7.1.
|
|
60
|
+
version: 7.1.3
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - '='
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 7.1.
|
|
67
|
+
version: 7.1.3
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: version_gem
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -91,20 +91,20 @@ dependencies:
|
|
|
91
91
|
requirements:
|
|
92
92
|
- - "~>"
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: '
|
|
94
|
+
version: '3.0'
|
|
95
95
|
- - ">="
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version:
|
|
97
|
+
version: 3.0.0
|
|
98
98
|
type: :development
|
|
99
99
|
prerelease: false
|
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
|
102
102
|
- - "~>"
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: '
|
|
104
|
+
version: '3.0'
|
|
105
105
|
- - ">="
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
|
-
version:
|
|
107
|
+
version: 3.0.0
|
|
108
108
|
- !ruby/object:Gem::Dependency
|
|
109
109
|
name: bundler-audit
|
|
110
110
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -182,7 +182,7 @@ dependencies:
|
|
|
182
182
|
version: '3.2'
|
|
183
183
|
- - ">="
|
|
184
184
|
- !ruby/object:Gem::Version
|
|
185
|
-
version: 3.2.
|
|
185
|
+
version: 3.2.2
|
|
186
186
|
type: :development
|
|
187
187
|
prerelease: false
|
|
188
188
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -192,7 +192,7 @@ dependencies:
|
|
|
192
192
|
version: '3.2'
|
|
193
193
|
- - ">="
|
|
194
194
|
- !ruby/object:Gem::Version
|
|
195
|
-
version: 3.2.
|
|
195
|
+
version: 3.2.2
|
|
196
196
|
- !ruby/object:Gem::Dependency
|
|
197
197
|
name: kettle-test
|
|
198
198
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -222,7 +222,7 @@ dependencies:
|
|
|
222
222
|
version: '3.2'
|
|
223
223
|
- - ">="
|
|
224
224
|
- !ruby/object:Gem::Version
|
|
225
|
-
version: 3.2.
|
|
225
|
+
version: 3.2.5
|
|
226
226
|
type: :development
|
|
227
227
|
prerelease: false
|
|
228
228
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -232,7 +232,7 @@ dependencies:
|
|
|
232
232
|
version: '3.2'
|
|
233
233
|
- - ">="
|
|
234
234
|
- !ruby/object:Gem::Version
|
|
235
|
-
version: 3.2.
|
|
235
|
+
version: 3.2.5
|
|
236
236
|
- !ruby/object:Gem::Dependency
|
|
237
237
|
name: ruby-progressbar
|
|
238
238
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -300,6 +300,7 @@ files:
|
|
|
300
300
|
- lib/zip-merge.rb
|
|
301
301
|
- lib/zip/merge.rb
|
|
302
302
|
- lib/zip/merge/backend.rb
|
|
303
|
+
- lib/zip/merge/provider.rb
|
|
303
304
|
- lib/zip/merge/version.rb
|
|
304
305
|
- sig/zip/merge.rbs
|
|
305
306
|
homepage: https://github.com/structuredmerge/structuredmerge-ruby
|
|
@@ -308,10 +309,10 @@ licenses:
|
|
|
308
309
|
- PolyForm-Small-Business-1.0.0
|
|
309
310
|
metadata:
|
|
310
311
|
homepage_uri: https://structuredmerge.org
|
|
311
|
-
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.
|
|
312
|
-
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.
|
|
312
|
+
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.3
|
|
313
|
+
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.3/CHANGELOG.md
|
|
313
314
|
bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
|
|
314
|
-
documentation_uri: https://www.rubydoc.info/gems/zip-merge/7.1.
|
|
315
|
+
documentation_uri: https://www.rubydoc.info/gems/zip-merge/7.1.3
|
|
315
316
|
funding_uri: https://github.com/sponsors/pboling
|
|
316
317
|
wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
|
|
317
318
|
news_uri: https://www.railsbling.com/tags/zip-merge
|
metadata.gz.sig
CHANGED
|
Binary file
|