zold 0.15.0 → 0.16.0
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/.gitignore +1 -0
- data/bin/zold +9 -6
- data/features/gem_package.feature +1 -1
- data/features/step_definitions/steps.rb +2 -2
- data/fixtures/merge/into-no-wallet/assert.rb +1 -1
- data/fixtures/merge/random-expenses/assert.rb +1 -1
- data/fixtures/merge/simple-case/assert.rb +1 -1
- data/lib/zold/age.rb +16 -8
- data/lib/zold/amount.rb +4 -2
- data/lib/zold/cached_wallets.rb +5 -6
- data/lib/zold/commands/clean.rb +15 -8
- data/lib/zold/commands/diff.rb +3 -3
- data/lib/zold/commands/fetch.rb +4 -4
- data/lib/zold/commands/list.rb +5 -4
- data/lib/zold/commands/merge.rb +2 -1
- data/lib/zold/commands/node.rb +14 -12
- data/lib/zold/commands/propagate.rb +2 -2
- data/lib/zold/commands/push.rb +3 -3
- data/lib/zold/commands/remove.rb +4 -1
- data/lib/zold/commands/routines/reconnect.rb +1 -0
- data/lib/zold/copies.rb +13 -14
- data/lib/zold/dir_items.rb +44 -0
- data/lib/zold/head.rb +1 -1
- data/lib/zold/key.rb +2 -2
- data/lib/zold/log.rb +2 -0
- data/lib/zold/node/async_entrance.rb +38 -28
- data/lib/zold/node/entrance.rb +4 -11
- data/lib/zold/node/farm.rb +9 -9
- data/lib/zold/node/front.rb +40 -25
- data/lib/zold/node/nodup_entrance.rb +4 -4
- data/lib/zold/node/safe_entrance.rb +2 -2
- data/lib/zold/node/spread_entrance.rb +5 -9
- data/lib/zold/node/sync_entrance.rb +2 -23
- data/lib/zold/patch.rb +2 -2
- data/lib/zold/remotes.rb +10 -6
- data/lib/zold/sync_wallets.rb +3 -22
- data/lib/zold/tree_wallets.rb +11 -6
- data/lib/zold/txns.rb +1 -1
- data/lib/zold/version.rb +1 -1
- data/lib/zold/wallet.rb +14 -5
- data/lib/zold/wallets.rb +5 -4
- data/test/commands/routines/test_spread.rb +1 -1
- data/test/commands/test_alias.rb +4 -4
- data/test/commands/test_clean.rb +14 -1
- data/test/commands/test_create.rb +2 -2
- data/test/commands/test_diff.rb +5 -5
- data/test/commands/test_fetch.rb +2 -2
- data/test/commands/test_merge.rb +19 -19
- data/test/commands/test_node.rb +1 -1
- data/test/commands/test_pay.rb +7 -6
- data/test/commands/test_propagate.rb +2 -1
- data/test/commands/test_pull.rb +1 -1
- data/test/commands/test_push.rb +1 -1
- data/test/commands/test_remove.rb +57 -0
- data/test/commands/test_taxes.rb +1 -1
- data/test/fake_home.rb +11 -8
- data/test/node/fake_node.rb +2 -2
- data/test/node/test_async_entrance.rb +24 -8
- data/test/node/test_emission.rb +2 -2
- data/test/node/test_entrance.rb +8 -6
- data/test/node/test_farm.rb +1 -1
- data/test/node/test_front.rb +42 -33
- data/test/node/test_nodup_entrance.rb +2 -2
- data/test/node/test_safe_entrance.rb +5 -5
- data/test/node/test_spread_entrance.rb +3 -3
- data/test/node/test_sync_entrance.rb +1 -1
- data/test/test__helper.rb +3 -29
- data/test/test_cached_wallets.rb +1 -1
- data/test/test_copies.rb +4 -2
- data/test/test_dir_items.rb +88 -0
- data/test/test_key.rb +2 -2
- data/test/test_log.rb +38 -0
- data/test/test_patch.rb +11 -11
- data/test/test_prefixes.rb +1 -1
- data/test/test_remotes.rb +12 -6
- data/test/test_sync_wallets.rb +6 -6
- data/test/test_tax.rb +4 -4
- data/test/test_tree_wallets.rb +16 -2
- data/test/test_wallet.rb +26 -26
- data/test/test_wallets.rb +5 -2
- data/test/test_zold.rb +2 -2
- data/test/upgrades/test_protocol_up.rb +1 -1
- data/upgrades/move_wallets_into_tree.rb +1 -1
- data/upgrades/protocol_up.rb +3 -3
- data/upgrades/rename_foreign_wallets.rb +1 -1
- data/zold.gemspec +27 -25
- metadata +91 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a80f542fc3561bcd48d5f02f31630a14ca52ff17beda6ec8bda6460ca85fd54a
|
4
|
+
data.tar.gz: 258cf2d603a886678b3947e28a23bee64d6d57cc6e41cea9a1a9c21f7b18c054
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e64a730a188c183fd1a477900907f54fc0c3acb52db6f9c4c0dc88d70a700f762866fbc130e92cd6b782e6cfea04eb6f9e8f01f97ce1e7a0ba2e09212590bdae
|
7
|
+
data.tar.gz: f70009e27da61954ee250f107e3ddff12977f572e27dd4bf37c28ea20877b1adf36c5162bd0a5ba5169097a33e56712f13e04db6d14973fc219942e0fd85c39c
|
data/.gitignore
CHANGED
data/bin/zold
CHANGED
@@ -57,7 +57,7 @@ args = []
|
|
57
57
|
unless ENV['RACK_ENV'] == 'test' || ARGV.find { |a| a == '--ignore-global-config' }
|
58
58
|
config = File.expand_path('~/.zold')
|
59
59
|
if File.exist?(config)
|
60
|
-
body =
|
60
|
+
body = IO.read(config)
|
61
61
|
extra = body.split(/[\r\n]+/).map(&:strip)
|
62
62
|
args += extra
|
63
63
|
log.debug("Found #{body.split(/\n/).length} lines in #{config}")
|
@@ -144,10 +144,11 @@ Available options:"
|
|
144
144
|
args << '--help' if opts.help?
|
145
145
|
args << "--network=#{opts['network']}"
|
146
146
|
|
147
|
-
|
148
|
-
|
147
|
+
home = File.expand_path(opts[:home])
|
148
|
+
FileUtils.mkdir_p(home)
|
149
|
+
Dir.chdir(home)
|
149
150
|
|
150
|
-
zoldata = File.
|
151
|
+
zoldata = File.join(home, '.zoldata')
|
151
152
|
|
152
153
|
unless opts['skip-upgrades']
|
153
154
|
Zold::Upgrades.new(Zold::VersionFile.new(File.join(zoldata, 'version')), 'upgrades').run
|
@@ -170,9 +171,11 @@ Available options:"
|
|
170
171
|
Zold::CachedWallets.new(
|
171
172
|
command == 'node' ? Zold::TreeWallets.new('.') : Zold::Wallets.new('.')
|
172
173
|
),
|
173
|
-
|
174
|
+
log: log
|
174
175
|
)
|
175
|
-
|
176
|
+
fremotes = File.join(zoldata, 'remotes')
|
177
|
+
remotes = Zold::Remotes.new(file: fremotes, network: opts['network'])
|
178
|
+
remotes.defaults unless File.exist?(fremotes)
|
176
179
|
copies = File.join(zoldata, 'copies')
|
177
180
|
|
178
181
|
log.debug("Network: #{opts['network']}")
|
@@ -10,7 +10,7 @@ Feature: Gem Package
|
|
10
10
|
require 'rubygems'
|
11
11
|
spec = Gem::Specification::load('./spec.rb')
|
12
12
|
if spec.executables.empty?
|
13
|
-
fail 'no executables: ' +
|
13
|
+
fail 'no executables: ' + IO.read('./spec.rb')
|
14
14
|
end
|
15
15
|
"""
|
16
16
|
When I run bash with:
|
@@ -40,14 +40,14 @@ After do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
When(%r{^I run ([a-z/-]+) with "([^"]*)"$}) do |cmd, args|
|
43
|
-
home = File.join(File.dirname(__FILE__), '../..')
|
43
|
+
home = File.expand_path(File.join(File.dirname(__FILE__), '../..'))
|
44
44
|
@stdout = `ruby -I#{home}/lib #{home}/#{cmd} #{args} 2>&1`
|
45
45
|
@exitstatus = $CHILD_STATUS.exitstatus
|
46
46
|
end
|
47
47
|
|
48
48
|
When(/^I run bash with:$/) do |text|
|
49
49
|
FileUtils.copy_entry(@cwd, File.join(@dir, 'zold'))
|
50
|
-
|
50
|
+
IO.write('run.sh', text)
|
51
51
|
@stdout = `/bin/bash run.sh 2>&1`
|
52
52
|
@exitstatus = $CHILD_STATUS.exitstatus
|
53
53
|
end
|
data/lib/zold/age.rb
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
23
|
require 'time'
|
24
|
+
require 'rainbow'
|
24
25
|
|
25
26
|
# Age in seconds.
|
26
27
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
@@ -29,22 +30,29 @@ require 'time'
|
|
29
30
|
module Zold
|
30
31
|
# Age
|
31
32
|
class Age
|
32
|
-
def initialize(time)
|
33
|
+
def initialize(time, limit: nil)
|
33
34
|
@time = time.nil? || time.is_a?(Time) ? time : Time.parse(time)
|
35
|
+
@limit = limit
|
34
36
|
end
|
35
37
|
|
36
38
|
def to_s
|
37
39
|
return '?' if @time.nil?
|
38
40
|
sec = Time.now - @time
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
"#{sec.round(2)}s"
|
43
|
-
elsif sec < 60 * 60
|
44
|
-
"#{(sec / 60).round}m"
|
41
|
+
txt = text(sec)
|
42
|
+
if !@limit.nil? && sec > @limit
|
43
|
+
Rainbow(txt).red
|
45
44
|
else
|
46
|
-
|
45
|
+
txt
|
47
46
|
end
|
48
47
|
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def text(sec)
|
52
|
+
return "#{(sec * 1000).round}ms" if sec < 1
|
53
|
+
return "#{sec.round(2)}s" if sec < 60
|
54
|
+
return "#{(sec / 60).round}m" if sec < 60 * 60
|
55
|
+
"#{(sec / 3600).round}h"
|
56
|
+
end
|
49
57
|
end
|
50
58
|
end
|
data/lib/zold/amount.rb
CHANGED
data/lib/zold/cached_wallets.rb
CHANGED
@@ -50,12 +50,11 @@ module Zold
|
|
50
50
|
|
51
51
|
def find(id)
|
52
52
|
@wallets.find(id) do |wallet|
|
53
|
-
|
54
|
-
@
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
)
|
53
|
+
w = @mutex.synchronize do
|
54
|
+
@cache[id] = wallet unless @cache[id]
|
55
|
+
@cache[id]
|
56
|
+
end
|
57
|
+
yield w
|
59
58
|
end
|
60
59
|
end
|
61
60
|
end
|
data/lib/zold/commands/clean.rb
CHANGED
@@ -23,6 +23,7 @@
|
|
23
23
|
require 'uri'
|
24
24
|
require 'json'
|
25
25
|
require 'time'
|
26
|
+
require 'futex'
|
26
27
|
require 'slop'
|
27
28
|
require 'rainbow'
|
28
29
|
require_relative 'args'
|
@@ -54,17 +55,23 @@ Available options:"
|
|
54
55
|
end
|
55
56
|
mine = Args.new(opts, @log).take || return
|
56
57
|
(mine.empty? ? @wallets.all : mine.map { |i| Id.new(i) }).each do |id|
|
57
|
-
clean(Copies.new(File.join(@copies, id), log: @log), opts)
|
58
|
+
clean(id, Copies.new(File.join(@copies, id), log: @log), opts)
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
61
|
-
def clean(cps, _)
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
#{
|
62
|
+
def clean(id, cps, _)
|
63
|
+
Futex.new(File.join(@copies, "#{id}-clean"), log: @log).open do
|
64
|
+
start = Time.now
|
65
|
+
deleted = cps.clean
|
66
|
+
@log.debug(
|
67
|
+
"#{deleted} expired local copies removed for #{cps} \
|
68
|
+
in #{Age.new(start, limit: 0.01)}, #{cps.all.count} left:\n" +
|
69
|
+
cps.all.map do |c|
|
70
|
+
wallet = Wallet.new(c[:path])
|
71
|
+
" #{c[:name]}: #{c[:score]} #{wallet.balance}/#{wallet.txns.count}t/\
|
72
|
+
#{wallet.digest[0, 6]}/#{Size.new(File.size(c[:path]))}/#{Age.new(File.mtime(c[:path]))}"
|
73
|
+
end.join("\n")
|
74
|
+
)
|
68
75
|
end
|
69
76
|
end
|
70
77
|
end
|
data/lib/zold/commands/diff.rb
CHANGED
@@ -67,12 +67,12 @@ Available options:"
|
|
67
67
|
patch.join(Wallet.new(c[:path]))
|
68
68
|
end
|
69
69
|
before = @wallets.find(id) do |wallet|
|
70
|
-
|
70
|
+
IO.read(wallet.path)
|
71
71
|
end
|
72
72
|
after = ''
|
73
|
-
Tempfile.open(['', Wallet::
|
73
|
+
Tempfile.open(['', Wallet::EXT]) do |f|
|
74
74
|
patch.save(f.path, overwrite: true)
|
75
|
-
after =
|
75
|
+
after = IO.read(f)
|
76
76
|
end
|
77
77
|
diff = Diffy::Diff.new(before, after, context: 0).to_s(:color)
|
78
78
|
@log.info(diff)
|
data/lib/zold/commands/fetch.rb
CHANGED
@@ -113,9 +113,9 @@ Available options:"
|
|
113
113
|
r.assert_valid_score(score)
|
114
114
|
r.assert_score_ownership(score)
|
115
115
|
r.assert_score_strength(score) unless opts['ignore-score-weakness']
|
116
|
-
Tempfile.open(['', Wallet::
|
116
|
+
Tempfile.open(['', Wallet::EXT]) do |f|
|
117
117
|
body = json['body']
|
118
|
-
|
118
|
+
IO.write(f, body)
|
119
119
|
wallet = Wallet.new(f.path)
|
120
120
|
wallet.refurbish
|
121
121
|
if wallet.protocol != Zold::PROTOCOL
|
@@ -127,10 +127,10 @@ Available options:"
|
|
127
127
|
if wallet.balance.negative? && !wallet.root?
|
128
128
|
raise "The balance of #{id} is #{wallet.balance} and it's not a root wallet"
|
129
129
|
end
|
130
|
-
copy = cps.add(
|
130
|
+
copy = cps.add(IO.read(f), score.host, score.port, score.value)
|
131
131
|
@log.info("#{r} returned #{Size.new(body.length)}/#{wallet.balance}/#{wallet.txns.count}t/\
|
132
132
|
#{digest(json)}/#{Age.new(json['mtime'])}/#{json['copies']}c \
|
133
|
-
as copy #{copy} of #{id} in #{Age.new(start)}: #{Rainbow(score.value).green} (#{json['version']})")
|
133
|
+
as copy #{copy} of #{id} in #{Age.new(start, limit: 4)}: #{Rainbow(score.value).green} (#{json['version']})")
|
134
134
|
end
|
135
135
|
score.value
|
136
136
|
end
|
data/lib/zold/commands/list.rb
CHANGED
@@ -37,10 +37,11 @@ module Zold
|
|
37
37
|
|
38
38
|
def run(_ = [])
|
39
39
|
@wallets.all.each do |id|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
@wallets.find(id) do |wallet|
|
41
|
+
msg = "#{id}: #{wallet.balance}/#{wallet.txns.count}t"
|
42
|
+
msg += " (net:#{wallet.network})" if wallet.network != Wallet::MAIN_NETWORK
|
43
|
+
@log.info(msg)
|
44
|
+
end
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
data/lib/zold/commands/merge.rb
CHANGED
@@ -85,9 +85,10 @@ Available options:"
|
|
85
85
|
@log.debug("Local copy of #{id} is absent, nothing to merge")
|
86
86
|
end
|
87
87
|
modified = patch.save(wallet.path, overwrite: true)
|
88
|
+
wallet.flush
|
88
89
|
if modified
|
89
90
|
@log.info("#{cps.count} copies with the total score of #{score} successfully merged \
|
90
|
-
into #{wallet.id}/#{wallet.balance}/#{wallet.txns.count}t in #{Age.new(start)}")
|
91
|
+
into #{wallet.id}/#{wallet.balance}/#{wallet.txns.count}t in #{Age.new(start, limit: 0.1 + cps.count * 0.01)}")
|
91
92
|
else
|
92
93
|
@log.info("Nothing changed in #{wallet.id} after merge of #{cps.count} copies")
|
93
94
|
end
|
data/lib/zold/commands/node.rb
CHANGED
@@ -153,13 +153,14 @@ module Zold
|
|
153
153
|
raise '--invoice is mandatory' unless opts['invoice']
|
154
154
|
if opts['nohup']
|
155
155
|
pid = nohup(opts)
|
156
|
-
|
156
|
+
IO.write(opts['save-pid'], pid) if opts['save-pid']
|
157
157
|
@log.debug("Process ID #{pid} saved into \"#{opts['save-pid']}\"")
|
158
158
|
@log.info(pid)
|
159
159
|
return
|
160
160
|
end
|
161
161
|
@log = Trace.new(@log, opts['trace-length'])
|
162
162
|
Front.set(:log, @log)
|
163
|
+
Front.set(:logger, @log)
|
163
164
|
Front.set(:trace, @log)
|
164
165
|
Front.set(:nohup_log, opts['nohup-log']) if opts['nohup-log']
|
165
166
|
Front.set(:version, opts['expose-version'])
|
@@ -168,9 +169,10 @@ module Zold
|
|
168
169
|
Front.set(:halt, opts['halt-code'])
|
169
170
|
Front.set(:disable_push, opts['disable-push'])
|
170
171
|
Front.set(:disable_fetch, opts['disable-fetch'])
|
171
|
-
|
172
|
+
home = File.expand_path(opts['home'])
|
173
|
+
Front.set(:home, home)
|
172
174
|
@log.info("Time: #{Time.now.utc.iso8601}")
|
173
|
-
@log.info("Home directory: #{
|
175
|
+
@log.info("Home directory: #{home}")
|
174
176
|
@log.info("Ruby version: #{RUBY_VERSION}")
|
175
177
|
@log.info("Zold gem version: #{Zold::VERSION}")
|
176
178
|
@log.info("Zold protocol version: #{Zold::PROTOCOL}")
|
@@ -189,7 +191,7 @@ module Zold
|
|
189
191
|
AccessLog: []
|
190
192
|
)
|
191
193
|
if opts['standalone']
|
192
|
-
@remotes = Zold::Remotes::Empty.new
|
194
|
+
@remotes = Zold::Remotes::Empty.new
|
193
195
|
@log.info('Running in standalone mode! (will never talk to other remotes)')
|
194
196
|
elsif @remotes.exists?(host, port)
|
195
197
|
Zold::Remote.new(remotes: @remotes).run(['remote', 'remove', host, port.to_s])
|
@@ -201,7 +203,7 @@ module Zold
|
|
201
203
|
Front.set(:remotes, @remotes)
|
202
204
|
Front.set(:copies, @copies)
|
203
205
|
Front.set(:address, address)
|
204
|
-
Front.set(:root,
|
206
|
+
Front.set(:root, home)
|
205
207
|
Front.set(:dump_errors, opts['dump-errors'])
|
206
208
|
Front.set(:port, opts['bind-port'])
|
207
209
|
Front.set(:reboot, !opts['never-reboot'])
|
@@ -227,21 +229,21 @@ module Zold
|
|
227
229
|
@remotes, @copies, address,
|
228
230
|
log: @log, network: opts['network']
|
229
231
|
),
|
230
|
-
File.join(
|
232
|
+
File.join(home, '.zoldata/sync-entrance'),
|
231
233
|
log: @log
|
232
234
|
),
|
233
235
|
@wallets, @remotes, address,
|
234
236
|
log: @log,
|
235
237
|
ignore_score_weakeness: opts['ignore-score-weakness']
|
236
238
|
),
|
237
|
-
File.join(
|
239
|
+
File.join(home, '.zoldata/async-entrance'), log: @log
|
238
240
|
),
|
239
241
|
@wallets
|
240
242
|
),
|
241
243
|
network: opts['network']
|
242
244
|
).start do |entrance|
|
243
245
|
Front.set(:entrance, entrance)
|
244
|
-
Farm.new(invoice, File.join(
|
246
|
+
Farm.new(invoice, File.join(home, 'farm'), log: @log)
|
245
247
|
.start(host, opts[:port], threads: opts[:threads], strength: opts[:strength]) do |farm|
|
246
248
|
Front.set(:farm, farm)
|
247
249
|
metronome(farm, opts).start do |metronome|
|
@@ -383,19 +385,19 @@ module Zold
|
|
383
385
|
end
|
384
386
|
|
385
387
|
def info(msg)
|
386
|
-
@log.debug(
|
388
|
+
@log.debug("WEBRICK #{msg}")
|
387
389
|
end
|
388
390
|
|
389
391
|
def debug(msg)
|
390
392
|
# nothing
|
391
393
|
end
|
392
394
|
|
393
|
-
def error(
|
394
|
-
@log.error(
|
395
|
+
def error(ex)
|
396
|
+
@log.error("WEBRICK #{Backtrace.new(ex)}")
|
395
397
|
end
|
396
398
|
|
397
399
|
def fatal(msg)
|
398
|
-
@log.error(
|
400
|
+
@log.error("WEBRICK #{msg}")
|
399
401
|
end
|
400
402
|
|
401
403
|
def debug?
|
@@ -91,8 +91,8 @@ Available options:"
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
modified.uniq!
|
94
|
-
@log.debug("Wallet #{id} propagated successfully, #{total} txns
|
95
|
-
#{modified.count} wallets affected")
|
94
|
+
@log.debug("Wallet #{id} propagated successfully, #{total} txns \
|
95
|
+
in #{Age.new(start, limit: 20 + total * 0.005)}, #{modified.count} wallets affected")
|
96
96
|
modified
|
97
97
|
end
|
98
98
|
end
|
data/lib/zold/commands/push.rb
CHANGED
@@ -89,14 +89,14 @@ total score for #{id} is #{total}")
|
|
89
89
|
start = Time.now
|
90
90
|
content = @wallets.find(id) do |wallet|
|
91
91
|
raise "The wallet #{id} is absent" unless wallet.exists?
|
92
|
-
|
92
|
+
IO.read(wallet.path)
|
93
93
|
end
|
94
94
|
uri = "/wallet/#{id}"
|
95
95
|
response = r.http(uri).put(content)
|
96
96
|
@wallets.find(id) do |wallet|
|
97
97
|
if response.code == '304'
|
98
98
|
@log.info("#{r}: same version #{Size.new(content.length)}/#{wallet.txns.count}t \
|
99
|
-
of #{wallet.id} there, in #{Age.new(start)}")
|
99
|
+
of #{wallet.id} there, in #{Age.new(start, limit: 0.5)}")
|
100
100
|
return 0
|
101
101
|
end
|
102
102
|
r.assert_code(200, response)
|
@@ -106,7 +106,7 @@ of #{wallet.id} there, in #{Age.new(start)}")
|
|
106
106
|
r.assert_score_ownership(score)
|
107
107
|
r.assert_score_strength(score) unless opts['ignore-score-weakness']
|
108
108
|
@log.info("#{r} accepted #{Size.new(content.length)}/#{wallet.digest[0, 6]}/#{wallet.txns.count}t \
|
109
|
-
of #{wallet.id} in #{Age.new(start)}: #{Rainbow(score.value).green} (#{json['version']})")
|
109
|
+
of #{wallet.id} in #{Age.new(start, limit: 4)}: #{Rainbow(score.value).green} (#{json['version']})")
|
110
110
|
score.value
|
111
111
|
end
|
112
112
|
end
|
data/lib/zold/commands/remove.rb
CHANGED
@@ -50,7 +50,10 @@ Available options:"
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def remove(id, _)
|
53
|
-
@wallets.find(id)
|
53
|
+
@wallets.find(id) do |w|
|
54
|
+
raise "Wallet #{id} doesn't exist in #{w.path}" unless w.exists?
|
55
|
+
File.delete(w.path)
|
56
|
+
end
|
54
57
|
@log.info("Wallet #{id} removed")
|
55
58
|
end
|
56
59
|
end
|