Sha256: bea83bddc1e7178b14e2224a2e3b9c394fb2e14b3e4b6b4f1b19faf91e3c29cc

Contents?: true

Size: 1.4 KB

Versions: 3

Compression:

Stored size: 1.4 KB

Contents

# rubocop: disable all

require 'my'
require 'run'
require 'import'

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

3 entries across 3 versions & 1 rubygems

Version Path
doit-1.0.2 lib/doit.rb
doit-1.0.1 lib/doit.rb
doit-0.3.9 lib/doit.rb