Class: Anvil::Cli

Inherits:
Object
  • Object
show all
Defined in:
lib/anvil/cli.rb

Overview

Anvil command line interface

Constant Summary collapse

HELP =
<<-HELP
Anvil is a tool for making your life easier.

Available tasks:
HELP

Instance Method Summary collapse

Instance Method Details

#build_task(argv) ⇒ Anvil::Task

Builds a task and prepares it to run



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/anvil/cli.rb', line 37

def build_task(argv)
  arguments = argv.dup
  task_name = arguments.shift
  klazz     = Task.from_name(task_name)
  klazz.new(*klazz.parse_options!(arguments))
rescue NameError
  task_not_found(task_name)
  exit(FALSE)
rescue ArgumentError
  help(task_name)
  exit(FALSE)
end

#help(task_name) ⇒ Object



55
56
57
58
# File 'lib/anvil/cli.rb', line 55

def help(task_name)
  printf("Wrong number of arguments.\n\n")
  HelpTask.run(task_name)
end

#load_tasksObject



29
30
31
# File 'lib/anvil/cli.rb', line 29

def load_tasks
  Anvil::TaskManager.load_tasks
end


60
61
62
63
64
# File 'lib/anvil/cli.rb', line 60

def print_help
  printf('%s', HELP)
  tasks = Anvil::TaskManager.tasks_by_name
  tasks.each { |task| print_task_line(task) }
end


66
67
68
# File 'lib/anvil/cli.rb', line 66

def print_task_line(task)
  printf("%-20s %s\n", task.task_name, task.description)
end

#run(argv) ⇒ Object?

Runs a task or prints its help if it needs arguments



19
20
21
22
23
24
25
26
27
# File 'lib/anvil/cli.rb', line 19

def run(argv)
  load_tasks

  if argv.empty?
    print_help
  else
    build_task(argv).run
  end
end

#task_not_found(task_name) ⇒ Object



50
51
52
53
# File 'lib/anvil/cli.rb', line 50

def task_not_found(task_name)
  printf("Task '#{task_name}' not found\n\n")
  print_help
end