zold 0.22.4 → 0.22.5
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/lib/zold/commands/merge.rb +4 -4
- data/lib/zold/commands/push.rb +4 -2
- data/lib/zold/commands/remote.rb +25 -18
- data/lib/zold/node/front.rb +1 -0
- data/lib/zold/node/spread_entrance.rb +1 -1
- data/lib/zold/patch.rb +6 -0
- data/lib/zold/version.rb +1 -1
- data/test/commands/test_merge.rb +2 -1
- data/test/commands/test_remote.rb +2 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 03bad0932b6c80df634b1a0dd7149220767feb14818e8b22e310dad000630c24
         | 
| 4 | 
            +
              data.tar.gz: eede3cc1a49152385f4ed01067343523719aaccb774e294a3f9b32987c53b155
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3ff2d16edc4fa1319d41622c3362e38c2e586701670e71883e6a31cc7a4d42a1dbede754009de98b7f2386e212a6d501ca7f4a8abeb6a4d1317a61e7211ab1b8
         | 
| 7 | 
            +
              data.tar.gz: 492ddd34efe4982713b3db909d8a260dac6ca18021474a26fd60200860e2bfb02d6d1d5d0a0a5da822728ad59b49c63a8bb950a93eb84e9bf399f6e37d623269
         | 
    
        data/lib/zold/commands/merge.rb
    CHANGED
    
    | @@ -94,7 +94,7 @@ Available options:" | |
| 94 94 | 
             
                    @wallets.acq(id) do |w|
         | 
| 95 95 | 
             
                      if w.exists?
         | 
| 96 96 | 
             
                        s = Time.now
         | 
| 97 | 
            -
                        merge_one(opts, patch, w, 'localhost', legacy: true)
         | 
| 97 | 
            +
                        merge_one(opts, patch, w, 'localhost', baseline: false, legacy: true)
         | 
| 98 98 | 
             
                        @log.debug("Local legacy copy of #{id} merged in #{Age.new(s)}: #{patch}")
         | 
| 99 99 | 
             
                      end
         | 
| 100 100 | 
             
                    end
         | 
| @@ -102,7 +102,7 @@ Available options:" | |
| 102 102 | 
             
                  cps.each_with_index do |c, idx|
         | 
| 103 103 | 
             
                    wallet = Wallet.new(c[:path])
         | 
| 104 104 | 
             
                    name = "#{c[:name]}/#{idx}/#{c[:score]}"
         | 
| 105 | 
            -
                    merge_one(opts, patch, wallet, name)
         | 
| 105 | 
            +
                    merge_one(opts, patch, wallet, name, baseline: !opts['no-baseline'])
         | 
| 106 106 | 
             
                    score += c[:score]
         | 
| 107 107 | 
             
                  end
         | 
| 108 108 | 
             
                  @wallets.acq(id) do |w|
         | 
| @@ -125,10 +125,10 @@ into #{@wallets.acq(id, &:mnemo)} in #{Age.new(start, limit: 0.1 + cps.count * 0 | |
| 125 125 | 
             
                  modified
         | 
| 126 126 | 
             
                end
         | 
| 127 127 |  | 
| 128 | 
            -
                def merge_one(opts, patch, wallet, name, legacy: false)
         | 
| 128 | 
            +
                def merge_one(opts, patch, wallet, name, baseline: false, legacy: false)
         | 
| 129 129 | 
             
                  start = Time.now
         | 
| 130 130 | 
             
                  @log.debug("Building a patch for #{wallet.id} from remote copy ##{name} with #{wallet.mnemo}...")
         | 
| 131 | 
            -
                  patch.join(wallet, baseline:  | 
| 131 | 
            +
                  patch.join(wallet, baseline: baseline, legacy: legacy) do |id|
         | 
| 132 132 | 
             
                    unless opts['shallow']
         | 
| 133 133 | 
             
                      Pull.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run(
         | 
| 134 134 | 
             
                        ['pull', id.to_s, "--network=#{opts['network']}", '--shallow']
         | 
    
        data/lib/zold/commands/push.rb
    CHANGED
    
    | @@ -137,7 +137,7 @@ out of #{nodes.value} in #{Age.new(start)}, total score for #{id} is #{total.val | |
| 137 137 | 
             
                    r.assert_score_strength(score) unless opts['ignore-score-weakness']
         | 
| 138 138 | 
             
                    if @log.info?
         | 
| 139 139 | 
             
                      @log.info("#{r} accepted #{@wallets.acq(id, &:mnemo)} in #{Age.new(start, limit: 4)}: \
         | 
| 140 | 
            -
             | 
| 140 | 
            +
            #{Rainbow(score.value).green} (#{json['version']})")
         | 
| 141 141 | 
             
                    end
         | 
| 142 142 | 
             
                    score.value
         | 
| 143 143 | 
             
                  end
         | 
| @@ -146,13 +146,15 @@ out of #{nodes.value} in #{Age.new(start)}, total score for #{id} is #{total.val | |
| 146 146 | 
             
                def read_one(id, r, opts)
         | 
| 147 147 | 
             
                  start = Time.now
         | 
| 148 148 | 
             
                  uri = "/wallet/#{id}"
         | 
| 149 | 
            +
                  attempt = 0
         | 
| 149 150 | 
             
                  begin
         | 
| 150 151 | 
             
                    response = Tempfile.open do |f|
         | 
| 151 152 | 
             
                      @wallets.acq(id) { |w| FileUtils.copy_file(w.path, f.path) }
         | 
| 152 153 | 
             
                      r.http(uri).put(f)
         | 
| 153 154 | 
             
                    end
         | 
| 154 155 | 
             
                    if response.status == 304
         | 
| 155 | 
            -
                      @log.info("#{r}: same version of #{@wallets.acq(id, &:mnemo)} there,  | 
| 156 | 
            +
                      @log.info("#{r}: same version of #{@wallets.acq(id, &:mnemo)} there, didn't push
         | 
| 157 | 
            +
            in #{Age.new(start, limit: 0.5)}")
         | 
| 156 158 | 
             
                      return 0
         | 
| 157 159 | 
             
                    end
         | 
| 158 160 | 
             
                    r.assert_code(200, response)
         | 
    
        data/lib/zold/commands/remote.rb
    CHANGED
    
    | @@ -269,24 +269,7 @@ Available options:" | |
| 269 269 | 
             
                        r.assert_score_ownership(score)
         | 
| 270 270 | 
             
                        r.assert_score_strength(score) unless opts['ignore-score-weakness']
         | 
| 271 271 | 
             
                        @remotes.rescore(score.host, score.port, score.value)
         | 
| 272 | 
            -
                         | 
| 273 | 
            -
                          if opts['reboot']
         | 
| 274 | 
            -
                            @log.info("#{r}: their version #{json['version']} is higher than mine #{VERSION}, reboot! \
         | 
| 275 | 
            -
              (use --never-reboot to avoid this from happening)")
         | 
| 276 | 
            -
                            terminate
         | 
| 277 | 
            -
                          end
         | 
| 278 | 
            -
                          @log.debug("#{r}: their version #{json['version']} is higher than mine #{VERSION}, \
         | 
| 279 | 
            -
              it's recommended to reboot, but I don't do it because of --never-reboot")
         | 
| 280 | 
            -
                        end
         | 
| 281 | 
            -
                        if Semantic::Version.new(VERSION) < Semantic::Version.new(Zold::Gem.new.last_version)
         | 
| 282 | 
            -
                          if opts['reboot']
         | 
| 283 | 
            -
                            @log.info("#{r}: the version of the gem is higher than mine #{VERSION}, reboot! \
         | 
| 284 | 
            -
              (use --never-reboot to avoid this from happening)")
         | 
| 285 | 
            -
                            terminate
         | 
| 286 | 
            -
                          end
         | 
| 287 | 
            -
                          @log.debug("#{r}: gem version is higher than mine #{VERSION}, \
         | 
| 288 | 
            -
              it's recommended to reboot, but I don't do it because of --never-reboot")
         | 
| 289 | 
            -
                        end
         | 
| 272 | 
            +
                        reboot(r, json, opts)
         | 
| 290 273 | 
             
                        if cycle.positive?
         | 
| 291 274 | 
             
                          json['all'].each do |s|
         | 
| 292 275 | 
             
                            next if @remotes.exists?(s['host'], s['port'])
         | 
| @@ -330,6 +313,30 @@ Available options:" | |
| 330 313 | 
             
                  end
         | 
| 331 314 | 
             
                end
         | 
| 332 315 |  | 
| 316 | 
            +
                def reboot(r, json, opts)
         | 
| 317 | 
            +
                  return unless json['repo'] == Zold::REPO
         | 
| 318 | 
            +
                  mine = Semantic::Version.new(VERSION)
         | 
| 319 | 
            +
                  if mine < Semantic::Version.new(json['version'])
         | 
| 320 | 
            +
                    if opts['reboot']
         | 
| 321 | 
            +
                      @log.info("#{r}: their version #{json['version']} is higher than mine #{VERSION}, reboot! \
         | 
| 322 | 
            +
            (use --never-reboot to avoid this from happening)")
         | 
| 323 | 
            +
                      terminate
         | 
| 324 | 
            +
                    end
         | 
| 325 | 
            +
                    @log.debug("#{r}: their version #{json['version']} is higher than mine #{VERSION}, \
         | 
| 326 | 
            +
            it's recommended to reboot, but I don't do it because of --never-reboot")
         | 
| 327 | 
            +
                  end
         | 
| 328 | 
            +
                  if mine < Semantic::Version.new(Zold::Gem.new.last_version)
         | 
| 329 | 
            +
                    if opts['reboot']
         | 
| 330 | 
            +
                      @log.info("#{r}: the version of the gem is higher than mine #{VERSION}, reboot! \
         | 
| 331 | 
            +
            (use --never-reboot to avoid this from happening)")
         | 
| 332 | 
            +
                      terminate
         | 
| 333 | 
            +
                    end
         | 
| 334 | 
            +
                    @log.debug("#{r}: gem version is higher than mine #{VERSION}, \
         | 
| 335 | 
            +
            it's recommended to reboot, but I don't do it because of --never-reboot")
         | 
| 336 | 
            +
                  end
         | 
| 337 | 
            +
                  @log.debug("#{r}: gem version is lower or equal to mine #{VERSION}, no need to reboot")
         | 
| 338 | 
            +
                end
         | 
| 339 | 
            +
             | 
| 333 340 | 
             
                def select(opts)
         | 
| 334 341 | 
             
                  selected = @remotes.all.sort_by { |r| r[:score] }.reverse.first(opts['max-nodes'])
         | 
| 335 342 | 
             
                  (@remotes.all - selected).each do |r|
         | 
    
        data/lib/zold/node/front.rb
    CHANGED
    
    | @@ -376,6 +376,7 @@ this is not a normal behavior, you may want to report a bug to our GitHub reposi | |
| 376 376 | 
             
                  content_type('application/json')
         | 
| 377 377 | 
             
                  pretty(
         | 
| 378 378 | 
             
                    version: settings.opts['expose-version'],
         | 
| 379 | 
            +
                    repo: Zold::REPO,
         | 
| 379 380 | 
             
                    alias: settings.node_alias,
         | 
| 380 381 | 
             
                    score: score.to_h,
         | 
| 381 382 | 
             
                    all: all_remotes,
         | 
    
        data/lib/zold/patch.rb
    CHANGED
    
    | @@ -44,6 +44,12 @@ module Zold | |
| 44 44 | 
             
                  "#{@txns.count} txns"
         | 
| 45 45 | 
             
                end
         | 
| 46 46 |  | 
| 47 | 
            +
                # Joins a new wallet on top of existing patch. An attempt is made to
         | 
| 48 | 
            +
                # copy as many transactions from the newcoming wallet to the existing
         | 
| 49 | 
            +
                # set of transactions, avoiding mistakes and duplicates.
         | 
| 50 | 
            +
                #
         | 
| 51 | 
            +
                # If +baseline+ is set to TRUE the provided wallet is considered to be
         | 
| 52 | 
            +
                # the baseline and all transactions will be blindly trusted.
         | 
| 47 53 | 
             
                def join(wallet, baseline: true, legacy: false)
         | 
| 48 54 | 
             
                  if @id.nil?
         | 
| 49 55 | 
             
                    @id = wallet.id
         | 
    
        data/lib/zold/version.rb
    CHANGED
    
    
    
        data/test/commands/test_merge.rb
    CHANGED
    
    | @@ -149,9 +149,10 @@ class TestMerge < Zold::Test | |
| 149 149 | 
             
                    copies = File.join(dir, 'copies')
         | 
| 150 150 | 
             
                    remotes = Zold::Remotes.new(file: File.join(dir, 'remotes'))
         | 
| 151 151 | 
             
                    Zold::Merge.new(wallets: wallets, remotes: remotes, copies: copies, log: test_log).run(
         | 
| 152 | 
            -
                      %w[merge 0123456789abcdef]
         | 
| 152 | 
            +
                      %w[merge 0123456789abcdef --shallow]
         | 
| 153 153 | 
             
                    )
         | 
| 154 154 | 
             
                    Dir.chdir(dir) do
         | 
| 155 | 
            +
                      test_log.info("Testing #{f}...")
         | 
| 155 156 | 
             
                      require File.join(dir, 'assert.rb')
         | 
| 156 157 | 
             
                    end
         | 
| 157 158 | 
             
                  end
         | 
| @@ -87,6 +87,7 @@ class TestRemote < Zold::Test | |
| 87 87 | 
             
                    body: {
         | 
| 88 88 | 
             
                      version: Zold::VERSION,
         | 
| 89 89 | 
             
                      score: zero.to_h,
         | 
| 90 | 
            +
                      repo: Zold::REPO,
         | 
| 90 91 | 
             
                      all: [
         | 
| 91 92 | 
             
                        { host: zero.host, port: zero.port }
         | 
| 92 93 | 
             
                      ]
         | 
| @@ -94,7 +95,7 @@ class TestRemote < Zold::Test | |
| 94 95 | 
             
                  )
         | 
| 95 96 | 
             
                  stub_request(:get, 'https://rubygems.org/api/v1/versions/zold/latest.json').to_return(
         | 
| 96 97 | 
             
                    status: 200,
         | 
| 97 | 
            -
                    body: '{"version": "9.9.9"}'
         | 
| 98 | 
            +
                    body: '{"version": "9.9.9", "repo": "' + Zold::REPO + '"}'
         | 
| 98 99 | 
             
                  )
         | 
| 99 100 | 
             
                  log = TestLogger.new
         | 
| 100 101 | 
             
                  cmd = Zold::Remote.new(remotes: remotes, log: log)
         | 
    
        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.22. | 
| 4 | 
            +
              version: 0.22.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Yegor Bugayenko
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-01- | 
| 11 | 
            +
            date: 2019-01-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: backtrace
         | 
| @@ -747,7 +747,7 @@ licenses: | |
| 747 747 | 
             
            - MIT
         | 
| 748 748 | 
             
            metadata: {}
         | 
| 749 749 | 
             
            post_install_message: |-
         | 
| 750 | 
            -
              Thanks for installing Zold 0.22. | 
| 750 | 
            +
              Thanks for installing Zold 0.22.5!
         | 
| 751 751 | 
             
                Study our White Paper: https://papers.zold.io/wp.pdf
         | 
| 752 752 | 
             
                Read our blog posts: https://blog.zold.io
         | 
| 753 753 | 
             
                Try ZLD online wallet at: https://wts.zold.io
         |