class MicroManager::CLI::CommandBuilder

Public Instance Methods

build(input) click to toggle source
# File lib/cli/command_builder.rb, line 8
def build(input)
  params = parse_input(input)

  if params[:help]
    ShowHelp.new(parser)
  elsif params[:"complete-task"]
    CompleteTask.new
  elsif params[:"list-tasks"] || params[:rest].empty?
    ListTasks.new
  else
    task = { description: params[:rest].join(" ") }
    task.merge!(due: params[:due]) if params[:due]
    AddTask.new(**task)
  end
end

Private Instance Methods

parse_input(input) click to toggle source
# File lib/cli/command_builder.rb, line 26
def parse_input(input)
  params = {}
  rest = parser.parse(input, into: params)

  params.merge(rest: rest)
end
parser() click to toggle source
# File lib/cli/command_builder.rb, line 33
def parser
  OptionParser.new do |opts|
    opts.accept(RelativeDate) do |date|
      RelativeDate.parse(date)
    end
    opts.on("-d", "--due [DATE]", RelativeDate, "Date to which the task is due, defaults to Date.today. Supports relative dates (e.g. 1-day, 2-weeks, etc)")
    opts.on("-c", "--complete-task", "Prompts on a task to mark as completed")
    opts.on("-l", "--list-tasks", "Lists all due tasks and tasks completed today")
    opts.on("-h", "--help", "Prints this help")
  end
end