Class: Anvil::Cli
- Inherits:
-
Object
- Object
- Anvil::Cli
- 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
-
#build_task(argv) ⇒ Anvil::Task
Builds a task and prepares it to run.
- #help(task_name) ⇒ Object
- #load_tasks ⇒ Object
- #print_help ⇒ Object
- #print_task_line(task) ⇒ Object
-
#run(argv) ⇒ Object?
Runs a task or prints its help if it needs arguments.
- #task_not_found(task_name) ⇒ Object
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.(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_tasks ⇒ Object
29 30 31 |
# File 'lib/anvil/cli.rb', line 29 def load_tasks Anvil::TaskManager.load_tasks end |
#print_help ⇒ Object
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 |
#print_task_line(task) ⇒ Object
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 |