class Balboa::CLI::Parser

Public Class Methods

new(argv) click to toggle source
# File lib/balboa/cli/parser.rb, line 13
def initialize(argv)
  @config = {}
  @argv = argv
  @parser = OptionParser.new
end
parse(*args) click to toggle source
# File lib/balboa/cli/parser.rb, line 9
def self.parse(*args)
  new(*args).parse
end

Public Instance Methods

parse() click to toggle source
# File lib/balboa/cli/parser.rb, line 19
def parse
  configure_parser
  @parser.parse!(@argv)
  @config
end

Private Instance Methods

configure_parser() click to toggle source
# File lib/balboa/cli/parser.rb, line 27
      def configure_parser
        program_name = @parser.program_name

        @parser.banner = <<-EOF.gsub(/^[ ]+/, '')
          \nUsage: #{program_name} [commands] [options]"

          Commands:

          #{program_name} last
          #{program_name} punch -p '123456' -s '12/06/1992,13/06/1992,14/06/1992'
          #{program_name} reset
        EOF

        set_options
        set_utilities
      end
parse_dates(dates) click to toggle source
# File lib/balboa/cli/parser.rb, line 90
def parse_dates(dates)
  @config.merge!('skips' => dates.map { |date| Date.parse(date) })
end
set_attributes() click to toggle source

:reek: TooManyStatements

# File lib/balboa/cli/parser.rb, line 68
def set_attributes
  @parser.on('-e', '--email \'EMAIL\'') do |email|
    @config['email'] = email
  end

  @parser.on('-p', '--password \'PASSWORD\'') do |password|
    @config['password'] = password
  end

  @parser.on('-w', '--project \'PROJECT\'') do |project|
    @config['project'] = project
  end
end
set_balboa_picture() click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/balboa/cli/parser.rb, line 109
def set_balboa_picture
  @parser.separator("\n" + [
    '░░░░░░▄▄███████████████▄▄░░░░',
    '░░░▄██████████████████████▄░░',
    '░░█████████▀███████▀████████░',
    '░█████████▀▀█▀█░░▀██▄██▄████░',
    '░░████████▄▄█░▀▀▄▄█░░▀░████░░',
    '░░███████▀░░░▄▄▄▄░░░▄▄▄███░░░',
    '░▀███████░░▄▀▀██▀░░█▄░▄▀███░░',
    '░░██████▀░░█░██▀▀░░████░██░░░',
    '░████████░░░░▀▀░░░░▀▄░▀▀█░░░░',
    '░█▀██████░░░░░░░░░░░░█░░█░░░░',
    '░▀▄████▄▀░░░░░░░░░░░▀▀░░░█░░░',
    '░▄██████▀▄░░░░░░░░░▄▄▄░░░█░░░',
    '░███████░█░░░░░░░░██▄▄█░░░█░░',
    '░░██████░░█░░░░░░░░░░░░░░░█░░',
    '░▀▄█████░░░▀▄░░░░░░░░░░░░▄▀░░',
    '░░░░███▀░░░░░▀▀▀█▄▄▄░░░░█▀░░░',
    '░░░░▄▀░░░░░░░░░▀▄░░░██▀▀▀░░░░',
    '░░▄▀░░░░░░░░░░░░░░▀░░▀▀▀▀▀▄░░',
    '▄▀░░░░░░░░░░░░░░░░░░░░░░▄░█▀▄'
  ].join("\n"))
end
set_custom_defaults() click to toggle source
# File lib/balboa/cli/parser.rb, line 58
def set_custom_defaults
  message = 'Read configuration options from FILE'

  @parser.on('-c', '--config \'FILE\'', message) do |file|
    @config.merge!(YAML.load_file(file))
    @config['skip_defaults'] = true
  end
end
set_help_option() click to toggle source
# File lib/balboa/cli/parser.rb, line 94
def set_help_option
  @parser.on('-h', '--help', 'Show this message') do
    $stdout.puts @parser
    exit
  end
end
set_options() click to toggle source
# File lib/balboa/cli/parser.rb, line 44
def set_options
  @parser.separator "\nOptions:"
  set_attributes
  set_skipped_dates
  set_custom_defaults
end
set_skipped_dates() click to toggle source
# File lib/balboa/cli/parser.rb, line 82
def set_skipped_dates
  message = 'Skip input dates'

  @parser.on('-s', '--skip \'DATES\'', message, Array) do |dates|
    parse_dates(dates)
  end
end
set_utilities() click to toggle source
# File lib/balboa/cli/parser.rb, line 51
def set_utilities
  @parser.separator "\nUtilities:"
  set_help_option
  set_version_option
  set_balboa_picture
end
set_version_option() click to toggle source
# File lib/balboa/cli/parser.rb, line 101
def set_version_option
  @parser.on('-v', '--version', 'Show version') do
    $stdout.puts "#{@parser.program_name} #{Balboa::VERSION}\n"
    exit
  end
end