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:, remotes:, copies:, log: Log::NULL) ⇒ Merge

Returns a new instance of Merge.



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

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

Instance Method Details

#run(args = []) ⇒ Object

Returns the array of modified wallets (IDs)



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/zold/commands/merge.rb', line 52

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 '--skip-legacy',
      'Don\'t make legacy transactions (older than 24 hours) immutable',
      default: false
    o.bool '--shallow',
      'Don\'t try to pull other wallets if their confirmations are required',
      default: false
    o.string '--network',
      'The name of the network we work in',
      default: 'test'
    o.bool '--help', 'Print instructions'
  end
  mine = Args.new(opts, @log).take || return
  modified = []
  list = mine.empty? ? @wallets.all : mine.map { |i| Id.new(i) }
  list.uniq.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