Sha256: 3bd61d1cca6420687a492631fb02c164ac11a6f865753675fb6f699a2ca10fa8

Contents?: true

Size: 1.41 KB

Versions: 6

Compression:

Stored size: 1.41 KB

Contents

require "my"
require "run"
require "import"
require "ricecream"

Doit = Object.new
class << Doit
  def start(options)
    @options = options
    list if options[:list]

    script = ARGV.shift
    str = ARGV.map { |x| "\"#{x}\"" }.join(" ")
    @argv = str.empty? ? "" : "set #{str}\n"
    execute(script) if script
  end

  def options
    @options ||= {}
    @options
  end

  def list
    hsh = Import.list
    hsh.sort.each { |abb, long|
      puts "#{abb}\t- #{long}"
      next unless options[:verbose]

      lines = `grep -i "usage\\|summary" #{long} | grep "^#"`.split("\n")
      lines.each { |line|
        next unless line
        next if line.empty?

        puts "\t  #{line}"
      }
    }
  end

  def execute(name)
    Import.init(name)
    unless Import.script
      puts "doit: script '#{name}' not found"
      return
    end
    What.init(Import.config)

    What.where.each { |w| puts "doit #{name} -r #{w}" } if options[:each]

    where_loop unless options[:each]
  end

  private

  def where_loop
    What.where.each { |w|
      matrix_loop(w)
    }
  end

  def matrix_loop(where)
    What.matrix.each { |mm|
      prefix = mm.empty? ? "" : "#{What.to_env(mm)}\n"

      What.env.each { |en|
        prefix2 = en.empty? ? "" : "#{en}\n"

        cmds = Import.script
        cmds = @argv + prefix + prefix2 + cmds
        Run.init cmds, where
        Run.info if options[:verbose]
        Run.run
      }
    }
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
doit-1.0.9 lib/doit.rb
doit-1.0.8 lib/doit.rb
doit-1.0.7 lib/doit.rb
doit-1.0.5 lib/doit.rb
doit-1.0.4 lib/doit.rb
doit-1.0.3 lib/doit.rb