class Toggl::Jobcan::Cli

CLI provider

Constants

DEFAULT_JOBCAN_CREDENTIAL_FILE_PATH
DEFAULT_TOGGL_WORKTIME_CONFIG_FILE_PATH

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/toggl/jobcan/cli.rb, line 66
def initialize(*args)
  super
  @target_days = []
end

Public Instance Methods

jobcan() click to toggle source
# File lib/toggl/jobcan/cli.rb, line 87
def jobcan
  @jobcan ||= Toggl::Jobcan::Client.new(
    credentials: @jc_credentials,
    toggl_worktime_config: options[:tw_config],
    dryrun: options[:dryrun]
  )
  @jobcan
end
main(*args) click to toggle source
# File lib/toggl/jobcan/cli.rb, line 43
def main(*args)
  parse_args(args)
  puts '*** DRYRUN MODE ***' if options[:dryrun]

  show_target_days
  return if options[:days]

  prepare_jobcan

  puts 'Driver ready'
  register_days

  jobcan.driver.quit
  puts 'All Input finished'
end
parse_args(args) click to toggle source
# File lib/toggl/jobcan/cli.rb, line 71
def parse_args(args)
  @target_days = args.map do |s|
    raise RangeError, "Invalid format #{s}" unless s.match?(/\d{8}/)

    Date.parse(s)
  end
  raise NoDayGivenError if @target_days.size.zero?
end
prepare_jobcan() click to toggle source
# File lib/toggl/jobcan/cli.rb, line 80
def prepare_jobcan
  @jc_credentials = Toggl::Jobcan::Credentials.new(
    path: options[:jc_credential]
  )
  jobcan.login
end
register_day(date) click to toggle source
# File lib/toggl/jobcan/cli.rb, line 109
def register_day(date)
  puts "Input date: #{date}"
  working_times = jobcan.fetch_toggl_worktime(date).flatten
  if working_times.any?(&:nil?)
    puts 'Includes nil data: skip'
    return
  end
  jobcan.navigate_to_attendance_modify_day(date)
  jobcan.input_day_worktime(date, working_times)
  sleep 1
  puts "  - Finish: #{date}; Total time: #{jobcan.toggl.total_time}"
end
register_days() click to toggle source
# File lib/toggl/jobcan/cli.rb, line 103
def register_days
  @target_days.each do |date|
    register_day(date)
  end
end
show_target_days() click to toggle source
# File lib/toggl/jobcan/cli.rb, line 96
def show_target_days
  puts 'Target days:'
  @target_days.each do |date|
    puts "  - #{date.strftime('%F')}"
  end
end
version() click to toggle source
# File lib/toggl/jobcan/cli.rb, line 61
def version
  puts "Version #{Toggl::Jobcan::VERSION}"
end