zold 0.4 → 0.4.1
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 +13 -13
- data/lib/zold/commands/node.rb +2 -2
- data/lib/zold/commands/push.rb +1 -1
- data/lib/zold/commands/remote.rb +7 -4
- data/lib/zold/http.rb +3 -1
- data/lib/zold/log.rb +12 -5
- data/lib/zold/node/front.rb +9 -3
- data/lib/zold/version.rb +1 -1
- data/test/commands/test_remote.rb +7 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 295d14430d8ebdd3388c4389ac84aa4690ea589d
|
4
|
+
data.tar.gz: 7f63a6461a39f5b4f14486d4ef2cf7ccf8a19795
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '008090bc5576401be63bb0366996f1c3e8509299d0ef9fdc691e513ee13c384fb83f35f9053294911787e50e774b8a8baa8b61525b96ea5ee186705ef24dfb5d'
|
7
|
+
data.tar.gz: a0d184623087e94ec76bf33ce0954c010de8f3d5793d8638bdd2a2a2209741f7f1f4f9360ae6cbd104e935f5b1b96109e94eb8794ad24104e991464b0fffd92d
|
data/README.md
CHANGED
data/bin/zold
CHANGED
@@ -40,19 +40,19 @@ Encoding.default_internal = Encoding::UTF_8
|
|
40
40
|
|
41
41
|
log = Zold::Log.new
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
args += ARGV
|
43
|
+
args = []
|
44
|
+
config = File.expand_path('~/.zold')
|
45
|
+
if File.exist?(config)
|
46
|
+
body = File.read(config)
|
47
|
+
extra = body.split(/[\r\n]+/).map(&:strip)
|
48
|
+
args += extra
|
49
|
+
log.debug("Found #{body.split(/\n/).length} lines in #{config}")
|
50
|
+
else
|
51
|
+
log.debug("Default config file #{config} not found")
|
52
|
+
end
|
53
|
+
args += ARGV
|
55
54
|
|
55
|
+
begin
|
56
56
|
opts = Slop.parse(args, strict: false, suppress_errors: true) do |o|
|
57
57
|
o.banner = "Usage: zold [options] command [arguments]
|
58
58
|
Available commands:
|
@@ -117,7 +117,7 @@ Available options:"
|
|
117
117
|
|
118
118
|
command = opts.arguments[0]
|
119
119
|
|
120
|
-
args =
|
120
|
+
args = args[(args.index(command) + 1)..-1]
|
121
121
|
|
122
122
|
wallets = Zold::Wallets.new(opts['dir'])
|
123
123
|
remotes = Zold::Remotes.new(File.join(opts['dir'], '.zold/remotes'))
|
data/lib/zold/commands/node.rb
CHANGED
data/lib/zold/commands/push.rb
CHANGED
@@ -56,7 +56,7 @@ Available options:"
|
|
56
56
|
def push(wallet, _)
|
57
57
|
raise 'The wallet is absent' unless wallet.exists?
|
58
58
|
remote = @remotes.all[0]
|
59
|
-
uri = URI("#{remote[:home]}
|
59
|
+
uri = URI("#{remote[:home]}wallet/#{wallet.id}")
|
60
60
|
response = Http.new(uri).put(File.read(wallet.path))
|
61
61
|
unless response.code == '200'
|
62
62
|
raise "Failed to push to #{uri}: #{response.code}/#{response.message}"
|
data/lib/zold/commands/remote.rb
CHANGED
@@ -76,6 +76,7 @@ Available options:"
|
|
76
76
|
remove(opts.arguments[1], opts.arguments[2].to_i)
|
77
77
|
when 'update'
|
78
78
|
update(opts)
|
79
|
+
update(opts, false)
|
79
80
|
else
|
80
81
|
@log.info(opts.to_s)
|
81
82
|
end
|
@@ -110,7 +111,7 @@ Available options:"
|
|
110
111
|
@log.info("There are #{@remotes.all.count} remote nodes in the list")
|
111
112
|
end
|
112
113
|
|
113
|
-
def update(opts)
|
114
|
+
def update(opts, deep = true)
|
114
115
|
@remotes.all.each do |r|
|
115
116
|
uri = URI("#{r[:home]}remotes")
|
116
117
|
res = Http.new(uri).get
|
@@ -145,9 +146,11 @@ Available options:"
|
|
145
146
|
next
|
146
147
|
end
|
147
148
|
@remotes.rescore(r[:host], r[:port], score.value)
|
148
|
-
|
149
|
-
|
150
|
-
|
149
|
+
if deep
|
150
|
+
json['all'].each do |s|
|
151
|
+
unless @remotes.exists?(s['host'], s['port'])
|
152
|
+
add(s['host'], s['port'])
|
153
|
+
end
|
151
154
|
end
|
152
155
|
end
|
153
156
|
@log.info("#{r[:host]}:#{r[:port]}: #{Rainbow(score.value).green} \
|
data/lib/zold/http.rb
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
|
21
21
|
require 'rainbow'
|
22
22
|
require 'net/http'
|
23
|
+
require_relative 'version'
|
23
24
|
require_relative 'score'
|
24
25
|
|
25
26
|
# HTTP page.
|
@@ -61,7 +62,8 @@ module Zold
|
|
61
62
|
|
62
63
|
def headers
|
63
64
|
headers = {
|
64
|
-
'User-Agent':
|
65
|
+
'User-Agent': "Zold #{VERSION}",
|
66
|
+
'Connection': 'close'
|
65
67
|
}
|
66
68
|
if @score.valid? && @score.value >= 3
|
67
69
|
headers[SCORE_HEADER] = score.reduced(4).to_s
|
data/lib/zold/log.rb
CHANGED
@@ -29,6 +29,13 @@ STDOUT.sync = true
|
|
29
29
|
module Zold
|
30
30
|
# Logging
|
31
31
|
class Log
|
32
|
+
MUTEX = Mutex.new
|
33
|
+
def self.print(text)
|
34
|
+
MUTEX.synchronize do
|
35
|
+
puts(text)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
32
39
|
def debug(msg)
|
33
40
|
# nothing
|
34
41
|
end
|
@@ -38,7 +45,7 @@ module Zold
|
|
38
45
|
end
|
39
46
|
|
40
47
|
def info(msg)
|
41
|
-
|
48
|
+
Log.print(msg)
|
42
49
|
end
|
43
50
|
|
44
51
|
def info?
|
@@ -46,13 +53,13 @@ module Zold
|
|
46
53
|
end
|
47
54
|
|
48
55
|
def error(msg)
|
49
|
-
|
56
|
+
Log.print("#{Rainbow('ERROR').red}: #{msg}")
|
50
57
|
end
|
51
58
|
|
52
59
|
# Extra verbose log
|
53
60
|
class Verbose
|
54
61
|
def debug(msg)
|
55
|
-
|
62
|
+
Log.print(msg)
|
56
63
|
end
|
57
64
|
|
58
65
|
def debug?
|
@@ -60,7 +67,7 @@ module Zold
|
|
60
67
|
end
|
61
68
|
|
62
69
|
def info(msg)
|
63
|
-
|
70
|
+
Log.print(msg)
|
64
71
|
end
|
65
72
|
|
66
73
|
def info?
|
@@ -68,7 +75,7 @@ module Zold
|
|
68
75
|
end
|
69
76
|
|
70
77
|
def error(msg)
|
71
|
-
|
78
|
+
Log.print("#{Rainbow('ERROR').red}: #{msg}")
|
72
79
|
end
|
73
80
|
end
|
74
81
|
|
data/lib/zold/node/front.rb
CHANGED
@@ -46,7 +46,7 @@ module Zold
|
|
46
46
|
set :logging, true
|
47
47
|
set :dump_errors, true
|
48
48
|
set :start, Time.now
|
49
|
-
set :lock,
|
49
|
+
set :lock, false
|
50
50
|
set :log, Log.new
|
51
51
|
set :show_exceptions, false
|
52
52
|
set :home, Dir.pwd
|
@@ -109,9 +109,15 @@ module Zold
|
|
109
109
|
cps = copies(id)
|
110
110
|
cps.add(request.body.read, 'remote', Remotes::PORT, 0)
|
111
111
|
require_relative '../commands/fetch'
|
112
|
-
Zold::Fetch.new(
|
112
|
+
Zold::Fetch.new(
|
113
|
+
remotes: remotes, copies: cps.root,
|
114
|
+
log: settings.log
|
115
|
+
).run([id.to_s])
|
113
116
|
require_relative '../commands/merge'
|
114
|
-
Zold::Merge.new(
|
117
|
+
Zold::Merge.new(
|
118
|
+
wallets: wallets, copies: cps.root,
|
119
|
+
log: settings.log
|
120
|
+
).run([id.to_s])
|
115
121
|
cps.remove('remote', Remotes::PORT)
|
116
122
|
"Success, #{wallet.id} balance is #{wallet.balance}"
|
117
123
|
end
|
data/lib/zold/version.rb
CHANGED
@@ -48,13 +48,19 @@ class TestRemote < Minitest::Test
|
|
48
48
|
stub_request(:get, 'http://localhost:2/remotes').to_return(
|
49
49
|
status: 404
|
50
50
|
)
|
51
|
+
stub_request(:get, 'http://localhost:888/remotes').to_return(
|
52
|
+
status: 404
|
53
|
+
)
|
54
|
+
stub_request(:get, 'http://localhost:999/remotes').to_return(
|
55
|
+
status: 404
|
56
|
+
)
|
51
57
|
cmd = Zold::Remote.new(remotes: remotes)
|
52
58
|
cmd.run(['clean'])
|
53
59
|
cmd.run(%w[add localhost 1])
|
54
60
|
cmd.run(%w[add localhost 2])
|
55
61
|
assert_equal(2, remotes.all.count)
|
56
62
|
cmd.run(['update', '--ignore-score-weakness'])
|
57
|
-
assert_equal(
|
63
|
+
assert_equal(1, remotes.all.count)
|
58
64
|
end
|
59
65
|
end
|
60
66
|
end
|