Sha256: a1c3a1f522f91ce7f0d019ece066778802d165cfe9828aa936a2b2cfd09372e0

Contents?: true

Size: 1.92 KB

Versions: 4

Compression:

Stored size: 1.92 KB

Contents

require 'miner_mover/worker'
require 'miner_mover/config'
require 'miner_mover/timer'

module MinerMover
  class Run
    def self.cfg_file(filename = nil)
      f = filename || ARGV.shift || Config.recent
      if f.nil?
        raise(Config::Error, "no config file")
      elsif !File.exist? f
        raise(Config::Error, "can't find file #{f.inspect}")
      elsif !File.readable? f
        raise(Config::Error, "can't read file #{f.inspect}")
      end
      f
    end

    attr_accessor :debugging, :logging
    attr_accessor :num_miners, :num_movers
    attr_accessor :cfg_file, :cfg, :miner, :mover, :timer
    attr_accessor :time_limit, :ore_limit

    def initialize(cfg_file: nil, timer: nil)
      @cfg_file = self.class.cfg_file(cfg_file)
      @cfg = Config.process @cfg_file
      main  = @cfg.fetch :main
      @miner = @cfg.fetch :miner
      @mover = @cfg.fetch :mover

      @num_miners = main.fetch :num_miners
      @num_movers = main.fetch :num_movers

      @time_limit = main.fetch :time_limit
      @ore_limit  = main.fetch :ore_limit
      @logging    = main.fetch :logging
      @debugging  = main.fetch :debugging

      @timer = timer || Timer.new
    end

    def cfg_banner!(duration: 0)
      MinerMover.puts "USING: #{@cfg_file}"
      pp @cfg
      sleep duration if duration > 0
      self
    end

    def start!
      @timer.restart
      self
    end

    def timestamp!
      dash = '-' * 70
      str = [dash, Timer.timestamp, dash].join(MinerMover::LINE_SEP)
      MinerMover.puts str
    end

    def new_miner
      Miner.new(**@miner)
    end

    def new_mover
      Mover.new(**@mover)
    end

    def ore_limit?(ore_mined)
      Ore.block(ore_mined) > @ore_limit
    end

    def time_limit?
      @timer.elapsed > @time_limit
    end

    def log msg
      @logging and MinerMover.log @timer, ' (main) ', msg
    end

    def debug msg
      @debugging and MinerMover.log @timer, '(debug) ', msg
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
miner_mover-0.1.2.3 lib/miner_mover/run.rb
miner_mover-0.1.2.1 lib/miner_mover/run.rb
miner_mover-0.1.1.1 lib/miner_mover/run.rb
miner_mover-0.1.0.1 lib/miner_mover/run.rb