zold 0.9.6 → 0.9.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 03f770700b197238978800aa6bb79d2b65dc973a
4
- data.tar.gz: 0cc1fcc216c91280b4a79b5fcc37b2acb3b71129
3
+ metadata.gz: c7c1b5e4219998688aaec4f6ca49d4f417d472fd
4
+ data.tar.gz: 1773d14213af2c9aa5548c3a98ae255243978432
5
5
  SHA512:
6
- metadata.gz: 3aca2c11779ca1fee660873ff96d46ef63dc300461cdf0893be52fb169dbe517e1aae726ca36e70ba9b78cc17a6c6bd7a98b449daa1e5fd4f5a2b9c761df490e
7
- data.tar.gz: 33cf35b1d960adfeee89236e51589305eff0f7c361c693b95a4c7f02380b657401c55ee436782781cc4b147cebf1edb0c32f620b46660f1a69af289ad96ebe8f
6
+ metadata.gz: e39ad8edca90cf93a11f6fddc204175491b42ec1f3f1e178c744a2f9bd1393f28d6ee29476d84f31bd80e087d06a76a047e580cf7b07d82d906c606b32fefeca
7
+ data.tar.gz: b2ab87529c40fc152e7a9cb4d87a8d911723161040185606173e50a95a0e793091dd4cc39399e7d82c76751ec7a9908110061c3704b18660d16235dcdfbb6d10
data/bin/zold CHANGED
@@ -156,12 +156,8 @@ Available options:"
156
156
  require_relative '../lib/zold/commands/propagate'
157
157
  Zold::Propagate.new(wallets: wallets, log: log).run(args)
158
158
  when 'pull'
159
- require_relative '../lib/zold/commands/fetch'
160
- Zold::Fetch.new(wallets: wallets, remotes: remotes, copies: copies, log: log).run(args)
161
- require_relative '../lib/zold/commands/merge'
162
- Zold::Merge.new(wallets: wallets, copies: copies, log: log).run(args)
163
- require_relative '../lib/zold/commands/clean'
164
- Zold::Clean.new(wallets: wallets, copies: copies, log: log).run(args)
159
+ require_relative '../lib/zold/commands/pull'
160
+ Zold::Pull.new(wallets: wallets, remotes: remotes, copies: copies, log: log).run(args)
165
161
  when 'taxes'
166
162
  require_relative '../lib/zold/commands/taxes'
167
163
  Zold::Taxes.new(wallets: wallets, log: log).run(args)
@@ -48,8 +48,9 @@ Available options:"
48
48
  end
49
49
  mine = Args.new(opts, @log).take || return
50
50
  raise 'Receiver wallet ID is required' if mine[0].nil?
51
- wallet = @wallets.find(Zold::Id.new(mine[0]))
52
- raise 'Wallet doesn\'t exist, do \'fetch\' first' unless wallet.exists?
51
+ id = Zold::Id.new(mine[0])
52
+ wallet = @wallets.find(id)
53
+ raise "Wallet #{id} doesn\'t exist in #{@wallets}, do 'fetch' first" unless wallet.exists?
53
54
  invoice(wallet, opts)
54
55
  end
55
56
 
@@ -96,6 +96,8 @@ module Zold
96
96
  Zold::Front.set(:port, opts['bind-port'])
97
97
  invoice = opts[:invoice]
98
98
  unless invoice.include?('@')
99
+ require_relative 'pull'
100
+ Pull.new(wallets: wallets, remotes: remotes, copies: copies, log: @log).run(['pull', invoice])
99
101
  require_relative 'invoice'
100
102
  invoice = Invoice.new(wallets: wallets, log: @log).run(['invoice', invoice])
101
103
  end
@@ -0,0 +1,46 @@
1
+ # Copyright (c) 2018 Yegor Bugayenko
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the 'Software'), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all
11
+ # copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
20
+
21
+ require_relative '../log'
22
+ require_relative 'fetch'
23
+ require_relative 'merge'
24
+ require_relative 'clean'
25
+
26
+ # PULL command.
27
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
28
+ # Copyright:: Copyright (c) 2018 Yegor Bugayenko
29
+ # License:: MIT
30
+ module Zold
31
+ # PULL command
32
+ class Pull
33
+ def initialize(wallets:, remotes:, copies:, log: Log::Quiet.new)
34
+ @wallets = wallets
35
+ @remotes = remotes
36
+ @copies = copies
37
+ @log = log
38
+ end
39
+
40
+ def run(args = [])
41
+ Zold::Fetch.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run(args)
42
+ Zold::Merge.new(wallets: @wallets, copies: @copies, log: @log).run(args)
43
+ Zold::Clean.new(wallets: @wallets, copies: @copies, log: @log).run(args)
44
+ end
45
+ end
46
+ end
@@ -34,9 +34,11 @@ module Zold
34
34
  end
35
35
  end
36
36
 
37
+ # The ID of the root wallet.
37
38
  ROOT = Id.new('0000000000000000')
38
39
 
39
40
  def==(other)
41
+ raise 'Can only compare with Id' unless other.is_a?(Id)
40
42
  to_s == other.to_s
41
43
  end
42
44
 
@@ -78,11 +78,11 @@ module Zold
78
78
  modified = Merge.new(
79
79
  wallets: @wallets, copies: copies.root, log: @log
80
80
  ).run(['merge', id.to_s])
81
+ Clean.new(wallets: @wallets, copies: copies.root, log: @log).run(['clean', id.to_s])
81
82
  copies.remove('remote', Remotes::PORT)
82
83
  Push.new(
83
84
  wallets: @wallets, remotes: @remotes, log: @log
84
85
  ).run(['push'] + modified.map(&:to_s))
85
- Clean.new(wallets: @wallets, copies: copies.root, log: @log).run(['clean', id.to_s])
86
86
  modified
87
87
  end
88
88
  end
@@ -23,5 +23,5 @@
23
23
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
24
24
  # License:: MIT
25
25
  module Zold
26
- VERSION = '0.9.6'.freeze
26
+ VERSION = '0.9.7'.freeze
27
27
  end
@@ -32,6 +32,13 @@ module Zold
32
32
  @dir = dir
33
33
  end
34
34
 
35
+ # @todo #70:30min Let's make it smarter. Instead of returning
36
+ # the full path let's substract the prefix from it if it's equal
37
+ # to the current directory in Dir.pwd.
38
+ def to_s
39
+ path
40
+ end
41
+
35
42
  def path
36
43
  FileUtils.mkdir_p(@dir)
37
44
  File.expand_path(@dir)
@@ -19,8 +19,8 @@
19
19
  # SOFTWARE.
20
20
 
21
21
  require 'minitest/autorun'
22
- require 'tmpdir'
23
22
  require_relative '../test__helper'
23
+ require_relative '../fake_home'
24
24
  require_relative '../../lib/zold/wallets'
25
25
  require_relative '../../lib/zold/amount'
26
26
  require_relative '../../lib/zold/key'
@@ -46,4 +46,19 @@ class TestPay < Minitest::Test
46
46
  assert_equal(amount * -1, source.balance)
47
47
  end
48
48
  end
49
+
50
+ def test_sends_from_root_wallet
51
+ FakeHome.new.run do |home|
52
+ source = home.create_wallet(Zold::Id::ROOT)
53
+ target = home.create_wallet
54
+ amount = Zold::Amount.new(zld: 14.95)
55
+ Zold::Pay.new(wallets: home.wallets, remotes: home.remotes, log: $log).run(
56
+ [
57
+ 'pay', '--private-key=fixtures/id_rsa',
58
+ source.id.to_s, target.id.to_s, amount.to_zld, 'For the car'
59
+ ]
60
+ )
61
+ assert_equal(amount * -1, source.balance)
62
+ end
63
+ end
49
64
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -290,6 +290,7 @@ files:
290
290
  - lib/zold/commands/node.rb
291
291
  - lib/zold/commands/pay.rb
292
292
  - lib/zold/commands/propagate.rb
293
+ - lib/zold/commands/pull.rb
293
294
  - lib/zold/commands/push.rb
294
295
  - lib/zold/commands/remote.rb
295
296
  - lib/zold/commands/show.rb