class Traker::CLI

Traker's CLI interfase

Constants

SUBCOMMANDS
SUBTEXT

Public Class Methods

new() click to toggle source
# File lib/traker/cli.rb, line 17
def initialize
  @main = OptionParser.new do |opts|
    opts.banner = 'Usage: traker [options] [subcommand] [options]'
    opts.on('-v', '--version', 'Show version')
    opts.separator ''
    opts.separator SUBTEXT
  end

  @subcommands = {
    SUBCOMMANDS[:list] => OptionParser.new do |opts|
      opts.banner = 'Usage: list [options]'
      opts.on('-a', '--all', 'list all tasks')
    end
  }
end

Public Instance Methods

run(argv) click to toggle source
# File lib/traker/cli.rb, line 33
def run(argv)
  options = {}
  @main.order!(argv, into: options)
  if options[:version]
    puts Traker::VERSION
    return
  end

  subcommand = argv.shift
  subcommand_options = {}
  @subcommands[subcommand]&.order!(argv, into: subcommand_options)

  service = Traker::Service.new

  case subcommand
  when SUBCOMMANDS[:list]
    if subcommand_options[:all]
      print service.tasks.join("\n")
    else
      print service.pending_tasks.join("\n")
    end
  end
end