zold 0.14.8 → 0.14.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +0 -0
  4. data/Gemfile +2 -0
  5. data/Rakefile +2 -0
  6. data/appveyor.yml +8 -3
  7. data/features/step_definitions/steps.rb +2 -0
  8. data/features/support/env.rb +2 -0
  9. data/fixtures/merge/asserts.rb +2 -0
  10. data/fixtures/merge/into-no-wallet/assert.rb +2 -0
  11. data/fixtures/merge/random-expenses/assert.rb +2 -0
  12. data/fixtures/merge/simple-case/assert.rb +2 -0
  13. data/fixtures/scripts/_head.sh +13 -0
  14. data/fixtures/scripts/distribute-wallet.sh +86 -0
  15. data/fixtures/scripts/spread-wallets.sh +56 -0
  16. data/lib/zold.rb +2 -0
  17. data/lib/zold/amount.rb +3 -1
  18. data/lib/zold/atomic_file.rb +2 -0
  19. data/lib/zold/backtrace.rb +2 -0
  20. data/lib/zold/commands/alias.rb +2 -0
  21. data/lib/zold/commands/args.rb +2 -0
  22. data/lib/zold/commands/calculate.rb +5 -3
  23. data/lib/zold/commands/clean.rb +2 -0
  24. data/lib/zold/commands/create.rb +2 -0
  25. data/lib/zold/commands/diff.rb +2 -0
  26. data/lib/zold/commands/fetch.rb +7 -2
  27. data/lib/zold/commands/invoice.rb +2 -0
  28. data/lib/zold/commands/list.rb +2 -0
  29. data/lib/zold/commands/merge.rb +2 -0
  30. data/lib/zold/commands/node.rb +2 -0
  31. data/lib/zold/commands/pay.rb +2 -0
  32. data/lib/zold/commands/propagate.rb +2 -0
  33. data/lib/zold/commands/pull.rb +2 -0
  34. data/lib/zold/commands/push.rb +2 -0
  35. data/lib/zold/commands/remote.rb +11 -6
  36. data/lib/zold/commands/routines/bonuses.rb +78 -0
  37. data/lib/zold/commands/routines/reconnect.rb +2 -0
  38. data/lib/zold/commands/routines/spread.rb +2 -0
  39. data/lib/zold/commands/show.rb +2 -0
  40. data/lib/zold/commands/taxes.rb +2 -0
  41. data/lib/zold/copies.rb +4 -2
  42. data/lib/zold/hexnum.rb +2 -0
  43. data/lib/zold/http.rb +28 -20
  44. data/lib/zold/hungry_wallets.rb +2 -0
  45. data/lib/zold/id.rb +2 -0
  46. data/lib/zold/json_page.rb +2 -0
  47. data/lib/zold/key.rb +2 -0
  48. data/lib/zold/log.rb +2 -0
  49. data/lib/zold/metronome.rb +2 -0
  50. data/lib/zold/node/async_entrance.rb +3 -3
  51. data/lib/zold/node/emission.rb +2 -0
  52. data/lib/zold/node/entrance.rb +5 -2
  53. data/lib/zold/node/farm.rb +3 -1
  54. data/lib/zold/node/front.rb +4 -1
  55. data/lib/zold/node/safe_entrance.rb +2 -0
  56. data/lib/zold/node/spread_entrance.rb +2 -0
  57. data/lib/zold/patch.rb +2 -0
  58. data/lib/zold/prefixes.rb +2 -0
  59. data/lib/zold/remotes.rb +15 -13
  60. data/lib/zold/score.rb +62 -59
  61. data/lib/zold/signature.rb +2 -0
  62. data/lib/zold/tax.rb +3 -1
  63. data/lib/zold/txn.rb +4 -2
  64. data/lib/zold/type.rb +36 -0
  65. data/lib/zold/upgrades.rb +2 -4
  66. data/lib/zold/verbose_thread.rb +2 -0
  67. data/lib/zold/version.rb +4 -2
  68. data/lib/zold/version_file.rb +2 -0
  69. data/lib/zold/wallet.rb +4 -2
  70. data/lib/zold/wallets.rb +2 -0
  71. data/test/commands/routines/test_bonuses.rb +76 -0
  72. data/test/commands/routines/test_reconnect.rb +2 -0
  73. data/test/commands/routines/test_spread.rb +2 -0
  74. data/test/commands/test_alias.rb +2 -0
  75. data/test/commands/test_calculate.rb +2 -0
  76. data/test/commands/test_clean.rb +2 -0
  77. data/test/commands/test_create.rb +2 -0
  78. data/test/commands/test_diff.rb +2 -0
  79. data/test/commands/test_fetch.rb +2 -0
  80. data/test/commands/test_invoice.rb +2 -0
  81. data/test/commands/test_list.rb +2 -0
  82. data/test/commands/test_merge.rb +2 -0
  83. data/test/commands/test_node.rb +6 -0
  84. data/test/commands/test_pay.rb +2 -0
  85. data/test/commands/test_propagate.rb +2 -0
  86. data/test/commands/test_push.rb +2 -0
  87. data/test/commands/test_remote.rb +40 -0
  88. data/test/commands/test_show.rb +2 -0
  89. data/test/commands/test_taxes.rb +2 -0
  90. data/test/fake_home.rb +2 -0
  91. data/test/node/fake_entrance.rb +2 -0
  92. data/test/node/fake_node.rb +3 -1
  93. data/test/node/test_async_entrance.rb +2 -0
  94. data/test/node/test_emission.rb +2 -0
  95. data/test/node/test_entrance.rb +2 -0
  96. data/test/node/test_farm.rb +9 -7
  97. data/test/node/test_front.rb +15 -10
  98. data/test/node/test_safe_entrance.rb +2 -0
  99. data/test/node/test_spread_entrance.rb +2 -0
  100. data/test/test__helper.rb +2 -0
  101. data/test/test_amount.rb +2 -0
  102. data/test/test_atomic_file.rb +2 -0
  103. data/test/test_backtrace.rb +2 -0
  104. data/test/test_copies.rb +4 -1
  105. data/test/test_hexnum.rb +2 -0
  106. data/test/test_http.rb +5 -3
  107. data/test/test_id.rb +2 -0
  108. data/test/test_key.rb +2 -0
  109. data/test/test_metronome.rb +2 -0
  110. data/test/test_patch.rb +2 -0
  111. data/test/test_prefixes.rb +2 -0
  112. data/test/test_remotes.rb +11 -0
  113. data/test/test_score.rb +26 -24
  114. data/test/test_signature.rb +2 -0
  115. data/test/test_tax.rb +4 -2
  116. data/test/test_txn.rb +2 -0
  117. data/test/test_upgrades.rb +2 -0
  118. data/test/test_verbose_thread.rb +2 -0
  119. data/test/test_version.rb +2 -0
  120. data/test/test_wallet.rb +2 -0
  121. data/test/test_wallets.rb +2 -0
  122. data/test/test_zold.rb +2 -0
  123. data/test/upgrades/test_protocol_up.rb +2 -0
  124. data/upgrades/2.rb +2 -0
  125. data/upgrades/protocol_up.rb +2 -0
  126. data/upgrades/rename_foreign_wallets.rb +2 -0
  127. data/zold.gemspec +5 -1
  128. metadata +38 -4
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -139,6 +141,15 @@ class TestRemotes < Minitest::Test
139
141
  end
140
142
  end
141
143
 
144
+ def test_tolerates_invalid_requests
145
+ Dir.mktmpdir 'test' do |dir|
146
+ file = File.join(dir, 'remotes')
147
+ remotes = Zold::Remotes.new(file)
148
+ remotes.error('127.0.0.1', 1024)
149
+ remotes.rescore('127.0.0.1', 1024, 15)
150
+ end
151
+ end
152
+
142
153
  def test_modifies_from_many_threads
143
154
  Dir.mktmpdir 'test' do |dir|
144
155
  remotes = Zold::Remotes.new(File.join(dir, 'a.csv'))
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -31,9 +33,9 @@ require_relative '../lib/zold/score'
31
33
  class TestScore < Minitest::Test
32
34
  def test_reduces_itself
33
35
  score = Zold::Score.new(
34
- Time.parse('2017-07-19T21:24:51Z'),
35
- 'localhost', 443, 'NOPREFIX@ffffffffffffffff',
36
- %w[A B C D E F G]
36
+ time: Time.parse('2017-07-19T21:24:51Z'),
37
+ host: 'localhost', port: 443, invoice: 'NOPREFIX@ffffffffffffffff',
38
+ suffixes: %w[A B C D E F G]
37
39
  ).reduced(2)
38
40
  assert_equal(2, score.value)
39
41
  assert_equal(64, score.hash.length)
@@ -41,8 +43,8 @@ class TestScore < Minitest::Test
41
43
 
42
44
  def test_drops_to_zero_when_expired
43
45
  score = Zold::Score.new(
44
- Time.now - 24 * 60 * 60,
45
- 'some-host', 9999, 'NOPREFIX@ffffffffffffffff',
46
+ time: Time.now - 24 * 60 * 60,
47
+ host: 'some-host', port: 9999, invoice: 'NOPREFIX@ffffffffffffffff',
46
48
  strength: 50
47
49
  ).next
48
50
  assert(score.valid?)
@@ -52,9 +54,9 @@ class TestScore < Minitest::Test
52
54
 
53
55
  def test_validates_wrong_score
54
56
  score = Zold::Score.new(
55
- Time.parse('2017-07-19T21:24:51Z'),
56
- 'localhost', 443, 'NOPREFIX@ffffffffffffffff',
57
- %w[xxx yyy zzz]
57
+ time: Time.parse('2017-07-19T21:24:51Z'),
58
+ host: 'localhost', port: 443, invoice: 'NOPREFIX@ffffffffffffffff',
59
+ suffixes: %w[xxx yyy zzz]
58
60
  )
59
61
  assert_equal(3, score.value)
60
62
  assert(!score.valid?)
@@ -62,8 +64,8 @@ class TestScore < Minitest::Test
62
64
 
63
65
  def test_prints_mnemo
64
66
  score = Zold::Score.new(
65
- Time.parse('2017-07-19T22:32:51Z'),
66
- 'localhost', 443, 'NOPREFIX@ffffffffffffffff'
67
+ time: Time.parse('2017-07-19T22:32:51Z'),
68
+ host: 'localhost', port: 443, invoice: 'NOPREFIX@ffffffffffffffff'
67
69
  )
68
70
  assert_equal('0:2232', score.to_mnemo)
69
71
  end
@@ -72,7 +74,7 @@ class TestScore < Minitest::Test
72
74
  time = Time.now
73
75
  score = Zold::Score.parse(
74
76
  Zold::Score.new(
75
- time, 'localhost', 999, 'NOPREFIX@ffffffffffffffff',
77
+ time: time, host: 'localhost', port: 999, invoice: 'NOPREFIX@ffffffffffffffff',
76
78
  strength: 1
77
79
  ).next.next.to_s
78
80
  )
@@ -86,7 +88,7 @@ class TestScore < Minitest::Test
86
88
  time = Time.now
87
89
  score = Zold::Score.parse_text(
88
90
  Zold::Score.new(
89
- time, 'a.example.com', 999, 'NOPREFIX@ffffffffffffffff',
91
+ time: time, host: 'a.example.com', port: 999, invoice: 'NOPREFIX@ffffffffffffffff',
90
92
  strength: 1
91
93
  ).next.next.next.to_text
92
94
  )
@@ -100,7 +102,7 @@ class TestScore < Minitest::Test
100
102
  time = Time.now
101
103
  score = Zold::Score.parse_text(
102
104
  Zold::Score.new(
103
- time, '192.168.0.1', 1, 'NOPREFIX@ffffffffffffffff', []
105
+ time: time, host: '192.168.0.1', port: 1, invoice: 'NOPREFIX@ffffffffffffffff', suffixes: []
104
106
  ).to_text
105
107
  )
106
108
  assert_equal(0, score.value)
@@ -111,7 +113,7 @@ class TestScore < Minitest::Test
111
113
  time = Time.now
112
114
  score = Zold::Score.parse(
113
115
  Zold::Score.new(
114
- time, '192.168.0.1', 1, 'NOPREFIX@ffffffffffffffff', []
116
+ time: time, host: '192.168.0.1', port: 1, invoice: 'NOPREFIX@ffffffffffffffff', suffixes: []
115
117
  ).to_s
116
118
  )
117
119
  assert_equal(0, score.value)
@@ -120,8 +122,8 @@ class TestScore < Minitest::Test
120
122
 
121
123
  def test_finds_next_score
122
124
  score = Zold::Score.new(
123
- Time.now, 'localhost', 443,
124
- 'NOPREFIX@ffffffffffffffff', strength: 2
125
+ time: Time.now, host: 'localhost', port: 443,
126
+ invoice: 'NOPREFIX@ffffffffffffffff', strength: 2
125
127
  ).next.next.next
126
128
  assert_equal(3, score.value)
127
129
  assert(score.valid?)
@@ -130,29 +132,29 @@ class TestScore < Minitest::Test
130
132
 
131
133
  def test_dont_expire_correctly
132
134
  score = Zold::Score.new(
133
- Time.now - 10 * 60 * 60, 'localhost', 443,
134
- 'NOPREFIX@ffffffffffffffff', strength: 2
135
+ time: Time.now - 10 * 60 * 60, host: 'localhost', port: 443,
136
+ invoice: 'NOPREFIX@ffffffffffffffff', strength: 2
135
137
  ).next.next.next
136
138
  assert(!score.expired?)
137
139
  end
138
140
 
139
141
  def test_correct_number_of_zeroes
140
142
  score = Zold::Score.new(
141
- Time.now, 'localhost', 443,
142
- 'NOPREFIX@ffffffffffffffff', strength: 3
143
+ time: Time.now, host: 'localhost', port: 443,
144
+ invoice: 'NOPREFIX@ffffffffffffffff', strength: 3
143
145
  ).next
144
146
  assert(score.hash.end_with?('000'))
145
147
  end
146
148
 
147
149
  def test_generates_hash_correctly
148
150
  score = Zold::Score.new(
149
- Time.parse('2018-06-27T06:22:41Z'), 'b2.zold.io', 4096,
150
- 'THdonv1E@abcdabcdabcdabcd', ['3a934b']
151
+ time: Time.parse('2018-06-27T06:22:41Z'), host: 'b2.zold.io', port: 4096,
152
+ invoice: 'THdonv1E@abcdabcdabcdabcd', suffixes: ['3a934b']
151
153
  )
152
154
  assert_equal('c9c72efbf6beeea13408c5e720ec42aec017c11c3db335e05595c03755000000', score.hash)
153
155
  score = Zold::Score.new(
154
- Time.parse('2018-06-27T06:22:41Z'), 'b2.zold.io', 4096,
155
- 'THdonv1E@abcdabcdabcdabcd', %w[3a934b 1421217]
156
+ time: Time.parse('2018-06-27T06:22:41Z'), host: 'b2.zold.io', port: 4096,
157
+ invoice: 'THdonv1E@abcdabcdabcdabcd', suffixes: %w[3a934b 1421217]
156
158
  )
157
159
  assert_equal('e04ab4e69f86aa17be1316a52148e7bc3187c6d3df581d885a862d8850000000', score.hash)
158
160
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -72,8 +74,8 @@ class TestTax < Minitest::Test
72
74
  invoice = "#{Zold::Prefixes.new(target).create}@#{target.id}"
73
75
  tax = Zold::Tax.new(wallet)
74
76
  score = Zold::Score.new(
75
- Time.now, 'localhost', 80, invoice,
76
- %w[A B C D E F G H I J K L M N O P Q R S T U V]
77
+ time: Time.now, host: 'localhost', port: 80, invoice: invoice,
78
+ suffixes: %w[A B C D E F G H I J K L M N O P Q R S T U V]
77
79
  )
78
80
  tax.pay(Zold::Key.new(file: 'fixtures/id_rsa'), score)
79
81
  assert(
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'semantic'
2
4
  require 'zold/version'
3
5
  require 'minitest/autorun'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -28,7 +30,7 @@ Gem::Specification.new do |s|
28
30
  s.specification_version = 2 if s.respond_to? :specification_version=
29
31
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
30
32
  s.rubygems_version = '2.2'
31
- s.required_ruby_version = '~>2.2'
33
+ s.required_ruby_version = '>=2.3.3'
32
34
  s.name = 'zold'
33
35
  s.version = Zold::VERSION
34
36
  s.license = 'MIT'
@@ -55,6 +57,8 @@ and suggests a different architecture for digital wallet maintenance.'
55
57
  s.add_runtime_dependency 'concurrent-ruby', '~>1.0'
56
58
  s.add_runtime_dependency 'cucumber', '~>3.1' # has to stay here for Heroku
57
59
  s.add_runtime_dependency 'diffy', '~>3.2'
60
+ s.add_runtime_dependency 'dry-struct', '~>0.5.0'
61
+ s.add_runtime_dependency 'dry-types', '~>0.13.2'
58
62
  s.add_runtime_dependency 'json', '~>1.8'
59
63
  s.add_runtime_dependency 'openssl', '~>2.1'
60
64
  s.add_runtime_dependency 'rainbow', '~>3.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.8
4
+ version: 0.14.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-11 00:00:00.000000000 Z
11
+ date: 2018-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-struct
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.5.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.5.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: dry-types
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.13.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.13.2
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: json
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -350,10 +378,12 @@ files:
350
378
  - fixtures/merge/simple-case/copies/0123456789abcdef/scores.z
351
379
  - fixtures/scripts/_head.sh
352
380
  - fixtures/scripts/calculate-scores.sh
381
+ - fixtures/scripts/distribute-wallet.sh
353
382
  - fixtures/scripts/print-helps.sh
354
383
  - fixtures/scripts/push-and-pull.sh
355
384
  - fixtures/scripts/redeploy-on-upgrade.sh
356
385
  - fixtures/scripts/sigdump.sh
386
+ - fixtures/scripts/spread-wallets.sh
357
387
  - heroku-run.sh
358
388
  - lib/zold.rb
359
389
  - lib/zold/amount.rb
@@ -375,6 +405,7 @@ files:
375
405
  - lib/zold/commands/pull.rb
376
406
  - lib/zold/commands/push.rb
377
407
  - lib/zold/commands/remote.rb
408
+ - lib/zold/commands/routines/bonuses.rb
378
409
  - lib/zold/commands/routines/reconnect.rb
379
410
  - lib/zold/commands/routines/spread.rb
380
411
  - lib/zold/commands/show.rb
@@ -402,6 +433,7 @@ files:
402
433
  - lib/zold/signature.rb
403
434
  - lib/zold/tax.rb
404
435
  - lib/zold/txn.rb
436
+ - lib/zold/type.rb
405
437
  - lib/zold/upgrades.rb
406
438
  - lib/zold/verbose_thread.rb
407
439
  - lib/zold/version.rb
@@ -409,6 +441,7 @@ files:
409
441
  - lib/zold/wallet.rb
410
442
  - lib/zold/wallets.rb
411
443
  - resources/remotes
444
+ - test/commands/routines/test_bonuses.rb
412
445
  - test/commands/routines/test_reconnect.rb
413
446
  - test/commands/routines/test_spread.rb
414
447
  - test/commands/test_alias.rb
@@ -476,9 +509,9 @@ require_paths:
476
509
  - lib
477
510
  required_ruby_version: !ruby/object:Gem::Requirement
478
511
  requirements:
479
- - - "~>"
512
+ - - ">="
480
513
  - !ruby/object:Gem::Version
481
- version: '2.2'
514
+ version: 2.3.3
482
515
  required_rubygems_version: !ruby/object:Gem::Requirement
483
516
  requirements:
484
517
  - - ">="
@@ -495,6 +528,7 @@ test_files:
495
528
  - features/gem_package.feature
496
529
  - features/step_definitions/steps.rb
497
530
  - features/support/env.rb
531
+ - test/commands/routines/test_bonuses.rb
498
532
  - test/commands/routines/test_reconnect.rb
499
533
  - test/commands/routines/test_spread.rb
500
534
  - test/commands/test_alias.rb