Class: Zip::Merge::Provider
- Inherits:
-
Binary::Merge::Provider
- Object
- Binary::Merge::Provider
- Zip::Merge::Provider
- Defined in:
- lib/zip/merge/provider.rb,
sig/zip/merge.rbs
Overview
Validates ZIP inputs while applying the safety-first opaque binary policy. rubocop:disable Metrics/MethodLength -- provider envelope is one public result contract
Constant Summary collapse
- PARSE_ERRORS =
[RuntimeError, NoMethodError, TypeError, KeyError].freeze
Instance Method Summary collapse
- #analyze(request) ⇒ Object
- #capabilities ⇒ Object
- #diff2(request) ⇒ Object
- #family ⇒ Object
- #merge2(request) ⇒ Object
- #merge3(request) ⇒ Object
- #provider_id ⇒ Object
Instance Method Details
#analyze(request) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/zip/merge/provider.rb', line 24 def analyze(request) inventory = parse(request.fetch(:source), :source, :analyze, request) return inventory if provider_result?(inventory) result(:analyze, request, analysis: inventory) end |
#capabilities ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/zip/merge/provider.rb', line 13 def capabilities { operations: Ast::Merge::ProviderContract::OPERATIONS, dialects: %i[zip], backends: [Zip::Merge::BACKEND_REFERENCE.id.to_sym], profiles: %i[opaque_archive], role: :workflow, source_preservation: %i[exact_source opaque_conflict_retains_ours] }.freeze end |
#diff2(request) ⇒ Object
31 32 33 34 |
# File 'lib/zip/merge/provider.rb', line 31 def diff2(request) failure = validate_sources(request, :diff2, before_source: :before, after_source: :after) failure || super end |
#family ⇒ Object
11 |
# File 'lib/zip/merge/provider.rb', line 11 def family = 'zip' |
#merge2(request) ⇒ Object
36 37 38 39 |
# File 'lib/zip/merge/provider.rb', line 36 def merge2(request) failure = validate_sources(request, :merge2, current_source: :current, incoming_source: :incoming) failure || super end |
#merge3(request) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/zip/merge/provider.rb', line 41 def merge3(request) failure = validate_sources( request, :merge3, base_source: :base, ours_source: :ours, theirs_source: :theirs ) failure || super end |
#provider_id ⇒ Object
10 |
# File 'lib/zip/merge/provider.rb', line 10 def provider_id = 'ruby.zip' |