Class: Zold::Merge

Inherits:
Object
  • Object
show all
Includes:
ThreadBadge
Defined in:
lib/zold/commands/merge.rb

Overview

MERGE pulling command

Instance Method Summary collapse

Constructor Details

#initialize(wallets:, copies:, log: Log::NULL) ⇒ Merge

Returns a new instance of Merge.



43
44
45
46
47
# File 'lib/zold/commands/merge.rb', line 43

def initialize(wallets:, copies:, log: Log::NULL)
  @wallets = wallets
  @copies = copies
  @log = log
end

Instance Method Details

#run(args = []) ⇒ Object

Returns the array of modified wallets (IDs)



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/zold/commands/merge.rb', line 50

def run(args = [])
  opts = Slop.parse(args, help: true, suppress_errors: true) do |o|
    o.banner = "Usage: zold merge [ID...] [options]
Available options:"
    o.bool '--no-baseline',
      'Don\'t trust any remote copies and re-validate all incoming payments against their wallets',
      default: false
    o.bool '--skip-propagate',
      'Don\'t propagate after merge',
      default: false
    o.bool '--help', 'Print instructions'
  end
  mine = Args.new(opts, @log).take || return
  modified = []
  (mine.empty? ? @wallets.all : mine.map { |i| Id.new(i) }).each do |id|
    next unless merge(id, Copies.new(File.join(@copies, id)), opts)
    modified << id
    next if opts['skip-propagate']
    require_relative 'propagate'
    modified += Propagate.new(wallets: @wallets, log: @log).run(args)
  end
  modified
end