zold 0.16.27 → 0.16.28
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
- data/README.md +1 -1
- data/bin/zold +19 -8
- data/fixtures/scripts/distribute-wallet.sh +1 -1
- data/fixtures/scripts/pull-on-start.sh +1 -1
- data/fixtures/scripts/push-and-pull.sh +1 -1
- data/fixtures/scripts/spread-wallets.sh +1 -1
- data/lib/zold/commands/alias.rb +4 -1
- data/lib/zold/commands/calculate.rb +4 -1
- data/lib/zold/commands/clean.rb +1 -1
- data/lib/zold/commands/create.rb +6 -3
- data/lib/zold/commands/diff.rb +4 -1
- data/lib/zold/commands/fetch.rb +4 -1
- data/lib/zold/commands/invoice.rb +4 -1
- data/lib/zold/commands/list.rb +12 -4
- data/lib/zold/commands/merge.rb +8 -1
- data/lib/zold/commands/next.rb +4 -1
- data/lib/zold/commands/node.rb +6 -3
- data/lib/zold/commands/pay.rb +4 -1
- data/lib/zold/commands/propagate.rb +4 -1
- data/lib/zold/commands/pull.rb +4 -1
- data/lib/zold/commands/push.rb +4 -1
- data/lib/zold/commands/remote.rb +6 -3
- data/lib/zold/commands/remove.rb +4 -1
- data/lib/zold/commands/routines/reconnect.rb +1 -1
- data/lib/zold/commands/routines/spread.rb +1 -1
- data/lib/zold/commands/show.rb +7 -3
- data/lib/zold/commands/taxes.rb +4 -1
- data/lib/zold/commands/thread_badge.rb +47 -0
- data/lib/zold/copies.rb +1 -1
- data/lib/zold/endless.rb +1 -1
- data/lib/zold/http.rb +3 -3
- data/lib/zold/key.rb +3 -0
- data/lib/zold/log.rb +52 -111
- data/lib/zold/metronome.rb +12 -10
- data/lib/zold/node/async_entrance.rb +2 -2
- data/lib/zold/node/entrance.rb +1 -1
- data/lib/zold/node/farm.rb +1 -1
- data/lib/zold/node/farmers.rb +1 -1
- data/lib/zold/node/front.rb +5 -5
- data/lib/zold/node/nodup_entrance.rb +1 -1
- data/lib/zold/node/spread_entrance.rb +1 -1
- data/lib/zold/node/sync_entrance.rb +1 -1
- data/lib/zold/patch.rb +2 -2
- data/lib/zold/remotes.rb +1 -1
- data/lib/zold/signature.rb +5 -1
- data/lib/zold/sync_wallets.rb +1 -1
- data/lib/zold/upgrades.rb +1 -1
- data/lib/zold/verbose_thread.rb +1 -1
- data/lib/zold/version.rb +1 -1
- data/lib/zold/version_file.rb +1 -1
- data/lib/zold/wallet.rb +2 -2
- data/resources/root.pub +14 -0
- data/test/commands/test_list.rb +2 -1
- data/test/commands/test_remote.rb +35 -4
- data/test/commands/test_show.rb +1 -1
- data/test/fake_home.rb +1 -1
- data/test/node/fake_node.rb +3 -2
- data/test/node/test_farm.rb +1 -1
- data/test/test__helper.rb +4 -3
- data/test/test_dir_items.rb +1 -1
- data/test/test_http.rb +44 -6
- data/test/test_key.rb +7 -0
- data/test/test_log.rb +12 -1
- data/test/test_remotes.rb +1 -1
- data/test/test_signature.rb +1 -0
- data/test/test_verbose_thread.rb +3 -3
- data/test/test_zold.rb +4 -3
- data/zold.gemspec +3 -2
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a58595f5d647efa9b0ff2f58a2d975d299f9dda59ddd938f8f5c2ff4f917f37
|
4
|
+
data.tar.gz: 86d0ddf04dcbe3301ce6906900f0d02687c3b893702e374dcab7008e99f7fa45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09ca8a13aca6b85dd4d1efb6dcfdeeea39b5c9bdf685e0c0d87a2b29c6de081c59e24d59d838ec2d57a20fcb1259fc1fde104aba107c3c33927a0de25638e098'
|
7
|
+
data.tar.gz: 18bfc9cf728d6d22d9e50287d1031e7340cb8b623ef3249523161e84fa711dba364bed0cbec34950108b4c4c5753719b59f1997813e0548a37c0d576c6d1cf70
|
data/README.md
CHANGED
@@ -311,7 +311,7 @@ For example, `Zold::Log::Verbose` will print a lot of information to the console
|
|
311
311
|
|
312
312
|
```ruby
|
313
313
|
require 'zold/commands/push'
|
314
|
-
Zold::Push.new(wallets: wallets, remotes: remotes, log: Zold::Log::
|
314
|
+
Zold::Push.new(wallets: wallets, remotes: remotes, log: Zold::Log::VERBOSE).run(['push'])
|
315
315
|
```
|
316
316
|
|
317
317
|
Also, all commands by default assume that you are working in a `test` network.
|
data/bin/zold
CHANGED
@@ -50,7 +50,7 @@ Thread.current.name = 'main'
|
|
50
50
|
Encoding.default_external = Encoding::UTF_8
|
51
51
|
Encoding.default_internal = Encoding::UTF_8
|
52
52
|
|
53
|
-
log = Zold::Log::
|
53
|
+
log = Zold::Log::REGULAR.dup
|
54
54
|
|
55
55
|
args = []
|
56
56
|
unless ENV['RACK_ENV'] == 'test' || ARGV.find { |a| a == '--ignore-global-config' }
|
@@ -105,9 +105,13 @@ Available options:"
|
|
105
105
|
"Home directory (default: #{Dir.pwd})",
|
106
106
|
default: Dir.pwd
|
107
107
|
o.string '--network',
|
108
|
-
"The name of the network we work in (default: #{Zold::Wallet::
|
108
|
+
"The name of the network we work in (default: #{Zold::Wallet::MAINET})",
|
109
109
|
required: true,
|
110
|
-
default: Zold::Wallet::
|
110
|
+
default: Zold::Wallet::MAINET
|
111
|
+
o.string '--pretty',
|
112
|
+
'Logging format, e.g. short, full, compact (default: short)',
|
113
|
+
required: true,
|
114
|
+
default: 'short'
|
111
115
|
o.bool '-h', '--help', 'Show these instructions'
|
112
116
|
o.bool '--trace', 'Show full stack trace in case of a problem'
|
113
117
|
o.bool '--memory-dump', 'Dump memory snapshot afterwards, to the console', default: false
|
@@ -117,7 +121,7 @@ Available options:"
|
|
117
121
|
Rainbow.enabled = false
|
118
122
|
end
|
119
123
|
o.on '--verbose', 'Enable extra logging information' do
|
120
|
-
log = Zold::Log::
|
124
|
+
log = Zold::Log::VERBOSE.dup
|
121
125
|
end
|
122
126
|
o.on '-v', '--version', 'Show current version' do
|
123
127
|
log.info(Zold::VERSION)
|
@@ -125,7 +129,14 @@ Available options:"
|
|
125
129
|
end
|
126
130
|
end
|
127
131
|
|
128
|
-
|
132
|
+
case opts['pretty'].downcase.strip
|
133
|
+
when 'short'
|
134
|
+
log.formatter = Zold::Log::SHORT
|
135
|
+
when 'compact'
|
136
|
+
log.formatter = Zold::Log::COMPACT
|
137
|
+
when 'full'
|
138
|
+
log.formatter = Zold::Log::FULL
|
139
|
+
end
|
129
140
|
|
130
141
|
log.debug("Gem location: #{File.dirname(File.dirname(__FILE__))}")
|
131
142
|
|
@@ -182,7 +193,7 @@ else
|
|
182
193
|
end
|
183
194
|
copies = File.join(zoldata, 'copies')
|
184
195
|
|
185
|
-
log.debug("Network: #{opts['network']} (#{opts['network'] == Zold::Wallet::
|
196
|
+
log.debug("Network: #{opts['network']} (#{opts['network'] == Zold::Wallet::MAINET ? 'main' : 'test'} net)")
|
186
197
|
|
187
198
|
cmd = lambda do
|
188
199
|
begin
|
@@ -204,10 +215,10 @@ cmd = lambda do
|
|
204
215
|
Zold::Pay.new(wallets: wallets, remotes: remotes, log: log).run(args)
|
205
216
|
when 'show'
|
206
217
|
require_relative '../lib/zold/commands/show'
|
207
|
-
Zold::Show.new(wallets: wallets, log: log).run(args)
|
218
|
+
Zold::Show.new(wallets: wallets, copies: copies, log: log).run(args)
|
208
219
|
when 'list'
|
209
220
|
require_relative '../lib/zold/commands/list'
|
210
|
-
Zold::List.new(wallets: wallets, log: log).run(args)
|
221
|
+
Zold::List.new(wallets: wallets, copies: copies, log: log).run(args)
|
211
222
|
when 'fetch'
|
212
223
|
require_relative '../lib/zold/commands/fetch'
|
213
224
|
Zold::Fetch.new(wallets: wallets, remotes: remotes, copies: copies, log: log).run(args)
|
@@ -6,7 +6,7 @@ function start_node {
|
|
6
6
|
cd ${port}
|
7
7
|
zold node --trace --invoice=DISTRWALLET@ffffffffffffffff \
|
8
8
|
--host=127.0.0.1 --port=${port} --bind-port=${port} \
|
9
|
-
--threads=0 --routine-immediately --never-reboot > log.txt &
|
9
|
+
--threads=0 --routine-immediately --never-reboot > log.txt 2>&1 &
|
10
10
|
pid=$!
|
11
11
|
echo ${pid} > pid
|
12
12
|
cd ..
|
@@ -5,7 +5,7 @@ mkdir server
|
|
5
5
|
cd server
|
6
6
|
zold node --trace --invoice=PULLONSTART@ffffffffffffffff --no-metronome \
|
7
7
|
--host=127.0.0.1 --port=${port} --bind-port=${port} \
|
8
|
-
--threads=0 --standalone &
|
8
|
+
--threads=0 --standalone --pretty=full 2>&1 &
|
9
9
|
cd ..
|
10
10
|
|
11
11
|
wait_for_port ${port}
|
data/lib/zold/commands/alias.rb
CHANGED
@@ -2,13 +2,16 @@
|
|
2
2
|
|
3
3
|
require 'slop'
|
4
4
|
require 'rainbow'
|
5
|
+
require_relative 'thread_badge'
|
5
6
|
require_relative 'args'
|
6
7
|
require_relative '../log'
|
7
8
|
|
8
9
|
module Zold
|
9
10
|
# Command to set an alias for wallet ID
|
10
11
|
class Alias
|
11
|
-
|
12
|
+
prepend ThreadBadge
|
13
|
+
|
14
|
+
def initialize(wallets:, log: Log::NULL)
|
12
15
|
@wallets = wallets
|
13
16
|
@log = log
|
14
17
|
end
|
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
require 'slop'
|
24
24
|
require 'zold/score'
|
25
|
+
require_relative 'thread_badge'
|
25
26
|
require_relative '../log'
|
26
27
|
|
27
28
|
# SCORE command.
|
@@ -31,7 +32,9 @@ require_relative '../log'
|
|
31
32
|
module Zold
|
32
33
|
# Calculate score
|
33
34
|
class Calculate
|
34
|
-
|
35
|
+
prepend ThreadBadge
|
36
|
+
|
37
|
+
def initialize(log: Log::NULL)
|
35
38
|
@log = log
|
36
39
|
end
|
37
40
|
|
data/lib/zold/commands/clean.rb
CHANGED
data/lib/zold/commands/create.rb
CHANGED
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
require 'slop'
|
24
24
|
require 'rainbow'
|
25
|
+
require_relative 'thread_badge'
|
25
26
|
require_relative 'args'
|
26
27
|
require_relative '../wallet'
|
27
28
|
require_relative '../log'
|
@@ -34,7 +35,9 @@ require_relative '../id'
|
|
34
35
|
module Zold
|
35
36
|
# Create command
|
36
37
|
class Create
|
37
|
-
|
38
|
+
prepend ThreadBadge
|
39
|
+
|
40
|
+
def initialize(wallets:, log: Log::NULL)
|
38
41
|
@wallets = wallets
|
39
42
|
@log = log
|
40
43
|
end
|
@@ -48,9 +51,9 @@ Available options:"
|
|
48
51
|
require: true,
|
49
52
|
default: File.expand_path('~/.ssh/id_rsa.pub')
|
50
53
|
o.string '--network',
|
51
|
-
"The name of the network (default: #{Wallet::
|
54
|
+
"The name of the network (default: #{Wallet::MAINET}",
|
52
55
|
require: true,
|
53
|
-
default: Wallet::
|
56
|
+
default: Wallet::MAINET
|
54
57
|
o.bool '--help', 'Print instructions'
|
55
58
|
end
|
56
59
|
mine = Args.new(opts, @log).take || return
|
data/lib/zold/commands/diff.rb
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
|
+
require_relative 'thread_badge'
|
23
24
|
require 'tempfile'
|
24
25
|
require 'slop'
|
25
26
|
require 'diffy'
|
@@ -36,7 +37,9 @@ require_relative '../wallet'
|
|
36
37
|
module Zold
|
37
38
|
# DIFF pulling command
|
38
39
|
class Diff
|
39
|
-
|
40
|
+
prepend ThreadBadge
|
41
|
+
|
42
|
+
def initialize(wallets:, copies:, log: Log::NULL)
|
40
43
|
@wallets = wallets
|
41
44
|
@copies = copies
|
42
45
|
@log = log
|
data/lib/zold/commands/fetch.rb
CHANGED
@@ -28,6 +28,7 @@ require 'slop'
|
|
28
28
|
require 'rainbow'
|
29
29
|
require 'concurrent/atomics'
|
30
30
|
require 'zold/score'
|
31
|
+
require_relative 'thread_badge'
|
31
32
|
require_relative 'args'
|
32
33
|
require_relative '../log'
|
33
34
|
require_relative '../age'
|
@@ -43,7 +44,9 @@ require_relative '../copies'
|
|
43
44
|
module Zold
|
44
45
|
# FETCH pulling command
|
45
46
|
class Fetch
|
46
|
-
|
47
|
+
prepend ThreadBadge
|
48
|
+
|
49
|
+
def initialize(wallets:, remotes:, copies:, log: Log::NULL)
|
47
50
|
@wallets = wallets
|
48
51
|
@remotes = remotes
|
49
52
|
@copies = copies
|
@@ -21,6 +21,7 @@
|
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
23
|
require 'slop'
|
24
|
+
require_relative 'thread_badge'
|
24
25
|
require_relative 'args'
|
25
26
|
require_relative '../log'
|
26
27
|
require_relative '../prefixes'
|
@@ -32,7 +33,9 @@ require_relative '../prefixes'
|
|
32
33
|
module Zold
|
33
34
|
# Generate invoice
|
34
35
|
class Invoice
|
35
|
-
|
36
|
+
prepend ThreadBadge
|
37
|
+
|
38
|
+
def initialize(wallets:, remotes:, copies:, log: Log::NULL)
|
36
39
|
@wallets = wallets
|
37
40
|
@remotes = remotes
|
38
41
|
@copies = copies
|
data/lib/zold/commands/list.rb
CHANGED
@@ -20,9 +20,11 @@
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
|
+
require_relative 'thread_badge'
|
23
24
|
require_relative '../log'
|
24
25
|
require_relative '../amount'
|
25
26
|
require_relative '../wallet'
|
27
|
+
require_relative '../size'
|
26
28
|
|
27
29
|
# LIST command.
|
28
30
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
@@ -31,26 +33,32 @@ require_relative '../wallet'
|
|
31
33
|
module Zold
|
32
34
|
# LIST command
|
33
35
|
class List
|
34
|
-
|
36
|
+
prepend ThreadBadge
|
37
|
+
|
38
|
+
def initialize(wallets:, copies:, log: Log::NULL)
|
35
39
|
@wallets = wallets
|
40
|
+
@copies = copies
|
36
41
|
@log = log
|
37
42
|
end
|
38
43
|
|
39
44
|
def run(_ = [])
|
40
45
|
total = 0
|
41
46
|
txns = 0
|
47
|
+
size = 0
|
42
48
|
balance = Amount::ZERO
|
43
49
|
@wallets.all.sort.each do |id|
|
44
50
|
total += 1
|
51
|
+
cps = Copies.new(File.join(@copies, id))
|
45
52
|
@wallets.acq(id) do |wallet|
|
46
|
-
msg = wallet.mnemo
|
47
|
-
msg += " (net:#{wallet.network})" if wallet.network != Wallet::
|
53
|
+
msg = "#{wallet.mnemo} #{cps.all.count}c"
|
54
|
+
msg += " (net:#{wallet.network})" if wallet.network != Wallet::MAINET
|
48
55
|
txns += wallet.txns.count
|
49
56
|
balance += wallet.balance
|
57
|
+
size += wallet.size
|
50
58
|
@log.info(msg)
|
51
59
|
end
|
52
60
|
end
|
53
|
-
@log.info("#{total} wallets, #{txns} transactions, #{balance} in total")
|
61
|
+
@log.info("#{total} wallets, #{txns} transactions, #{Size.new(size)}, #{balance} in total")
|
54
62
|
end
|
55
63
|
end
|
56
64
|
end
|
data/lib/zold/commands/merge.rb
CHANGED
@@ -23,6 +23,7 @@
|
|
23
23
|
require 'slop'
|
24
24
|
require 'rainbow'
|
25
25
|
require 'backtrace'
|
26
|
+
require_relative 'thread_badge'
|
26
27
|
require_relative 'args'
|
27
28
|
require_relative '../age'
|
28
29
|
require_relative '../log'
|
@@ -37,7 +38,9 @@ require_relative '../patch'
|
|
37
38
|
module Zold
|
38
39
|
# MERGE pulling command
|
39
40
|
class Merge
|
40
|
-
|
41
|
+
prepend ThreadBadge
|
42
|
+
|
43
|
+
def initialize(wallets:, copies:, log: Log::NULL)
|
41
44
|
@wallets = wallets
|
42
45
|
@copies = copies
|
43
46
|
@log = log
|
@@ -51,6 +54,9 @@ Available options:"
|
|
51
54
|
o.bool '--no-baseline',
|
52
55
|
'Don\'t trust any remote copies and re-validate all incoming payments against their wallets',
|
53
56
|
default: false
|
57
|
+
o.bool '--skip-propagate',
|
58
|
+
'Don\'t propagate after merge',
|
59
|
+
default: false
|
54
60
|
o.bool '--help', 'Print instructions'
|
55
61
|
end
|
56
62
|
mine = Args.new(opts, @log).take || return
|
@@ -58,6 +64,7 @@ Available options:"
|
|
58
64
|
(mine.empty? ? @wallets.all : mine.map { |i| Id.new(i) }).each do |id|
|
59
65
|
next unless merge(id, Copies.new(File.join(@copies, id)), opts)
|
60
66
|
modified << id
|
67
|
+
next if opts['skip-propagate']
|
61
68
|
require_relative 'propagate'
|
62
69
|
modified += Propagate.new(wallets: @wallets, log: @log).run(args)
|
63
70
|
end
|
data/lib/zold/commands/next.rb
CHANGED
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
require 'slop'
|
24
24
|
require 'zold/score'
|
25
|
+
require_relative 'thread_badge'
|
25
26
|
require_relative '../log'
|
26
27
|
|
27
28
|
# NEXT command.
|
@@ -31,7 +32,9 @@ require_relative '../log'
|
|
31
32
|
module Zold
|
32
33
|
# Calculate next score
|
33
34
|
class Next
|
34
|
-
|
35
|
+
prepend ThreadBadge
|
36
|
+
|
37
|
+
def initialize(log: Log::NULL)
|
35
38
|
@log = log
|
36
39
|
end
|
37
40
|
|
data/lib/zold/commands/node.rb
CHANGED
@@ -25,6 +25,7 @@ require 'slop'
|
|
25
25
|
require 'backtrace'
|
26
26
|
require 'concurrent'
|
27
27
|
require 'zold/score'
|
28
|
+
require_relative 'thread_badge'
|
28
29
|
require_relative '../version'
|
29
30
|
require_relative '../age'
|
30
31
|
require_relative '../metronome'
|
@@ -54,7 +55,9 @@ require_relative 'remote'
|
|
54
55
|
module Zold
|
55
56
|
# NODE command
|
56
57
|
class Node
|
57
|
-
|
58
|
+
prepend ThreadBadge
|
59
|
+
|
60
|
+
def initialize(wallets:, remotes:, copies:, log: Log::NULL)
|
58
61
|
@remotes = remotes
|
59
62
|
@copies = copies
|
60
63
|
@log = log
|
@@ -123,8 +126,8 @@ module Zold
|
|
123
126
|
'The location of RSA private key (default: ~/.ssh/id_rsa)',
|
124
127
|
default: '~/.ssh/id_rsa'
|
125
128
|
o.string '--network',
|
126
|
-
"The name of the network (default: #{Wallet::
|
127
|
-
default: Wallet::
|
129
|
+
"The name of the network (default: #{Wallet::MAINET})",
|
130
|
+
default: Wallet::MAINET
|
128
131
|
o.integer '--nohup-max-cycles',
|
129
132
|
'Maximum amount of nohup re-starts (-1 by default, which means forever)',
|
130
133
|
default: -1
|
data/lib/zold/commands/pay.rb
CHANGED
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
require 'slop'
|
24
24
|
require 'rainbow'
|
25
|
+
require_relative 'thread_badge'
|
25
26
|
require_relative 'args'
|
26
27
|
require_relative '../id'
|
27
28
|
require_relative '../amount'
|
@@ -34,7 +35,9 @@ require_relative '../log'
|
|
34
35
|
module Zold
|
35
36
|
# Money sending command
|
36
37
|
class Pay
|
37
|
-
|
38
|
+
prepend ThreadBadge
|
39
|
+
|
40
|
+
def initialize(wallets:, remotes:, log: Log::NULL)
|
38
41
|
@wallets = wallets
|
39
42
|
@remotes = remotes
|
40
43
|
@log = log
|
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
require 'slop'
|
24
24
|
require 'rainbow'
|
25
|
+
require_relative 'thread_badge'
|
25
26
|
require_relative 'args'
|
26
27
|
require_relative '../log'
|
27
28
|
require_relative '../age'
|
@@ -36,7 +37,9 @@ require_relative '../prefixes'
|
|
36
37
|
module Zold
|
37
38
|
# PROPAGATE pulling command
|
38
39
|
class Propagate
|
39
|
-
|
40
|
+
prepend ThreadBadge
|
41
|
+
|
42
|
+
def initialize(wallets:, log: Log::NULL)
|
40
43
|
@wallets = wallets
|
41
44
|
@log = log
|
42
45
|
end
|
data/lib/zold/commands/pull.rb
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
|
+
require_relative 'thread_badge'
|
23
24
|
require_relative '../log'
|
24
25
|
require_relative 'fetch'
|
25
26
|
require_relative 'merge'
|
@@ -32,7 +33,9 @@ require_relative 'clean'
|
|
32
33
|
module Zold
|
33
34
|
# PULL command
|
34
35
|
class Pull
|
35
|
-
|
36
|
+
prepend ThreadBadge
|
37
|
+
|
38
|
+
def initialize(wallets:, remotes:, copies:, log: Log::NULL)
|
36
39
|
@wallets = wallets
|
37
40
|
@remotes = remotes
|
38
41
|
@copies = copies
|