Sha256: f5f2f26ebddeea712faad9806578cb6c3e1b76224e9eec1d17cbcec8240f1acb

Contents?: true

Size: 1.75 KB

Versions: 10

Compression:

Stored size: 1.75 KB

Contents

# encoding: utf-8

require "nake/dsl"

argument("-H", "--help") do |task_name = nil|
  if task_name
    task = Task[task_name]
    if task
      p task # TODO
    else
      abort "Task #{task_name} doesn't exist"
    end
  else
    Kernel.abort "Use #{$0} -T for list of all available tasks or -i for interactive session"
  end
end

argument("-T", "--tasks") do |pattern = nil|
  Task.boot

  tasks, options = Task.tasks.select { |name, task| not task.hidden? }.sort.partition { |key, value| not key.match(/^-/) }
  arguments = Nake.args.sort

  puts "\n#{"===".yellow} #{"Available tasks".magenta} #{"===".yellow}"
  if tasks.empty?
    puts "No tasks defined"
  else
    tasks.each do |name, task|
      puts "#{name.green} #{task.dependencies.join(", ")} # #{task.description || "no description yet"}"
    end
  end

  puts "\n#{"===".yellow} #{"Available arguments".magenta} #{"===".yellow}"
  if arguments.empty?
    puts "No arguments defined"
  else
    arguments.each do |names, proc|
      puts "#{names.join(" or ").green}" # TODO: description
    end
  end
  exit
end

argument("-i", "--interactive") do |task = nil|
  Task.boot
  ARGV.clear # otherwise IRB will parse it

  require "irb"
  begin
    require "irb/readline"
  rescue LoadError
    warn "Code completion via readline isn't available"
  end

  if task
    Task[task].tap { |task| task.call(*args, options) }
  end

  IRB.start
  exit! # TODO: can we do it without exit? The usecase is ./tasks.rb -i mytask, so we can set env and then run the task
end

Nake.args["--verbose",  "--no-verbose"]  = lambda { |key, value| Nake.verbose = value }
Nake.args["--debug",    "--no-debug"]    = lambda { |key, value| Nake.debug = value }
Nake.args["--coloring", "--no-coloring"] = lambda { |key, value| Nake.coloring = value }

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
nake-0.1.1 lib/nake/args.rb
nake-0.1 lib/nake/args.rb
nake-0.0.9.5 lib/nake/args.rb
nake-0.0.9.4 lib/nake/args.rb
nake-0.0.9.3 lib/nake/args.rb
nake-0.0.9.2 lib/nake/args.rb
nake-0.0.9.pre lib/nake/args.rb
do_riak-0.10.1.pre gems/gems/nake-0.0.8/lib/nake/args.rb
nake-0.0.8.pre lib/nake/args.rb
nake-0.0.8 lib/nake/args.rb