Module: Kobot

Defined in:
lib/kobot.rb,
lib/kobot/config.rb,
lib/kobot/engine.rb,
lib/kobot/logger.rb,
lib/kobot/mailer.rb,
lib/kobot/option.rb,
lib/kobot/version.rb,
lib/kobot/selector.rb,
lib/kobot/exception.rb,
lib/kobot/credential.rb

Overview

Code adapted conveniently from webdrivers for consistency https://github.com/titusfortner/webdrivers/blob/master/lib/webdrivers/logger.rb

Defined Under Namespace

Classes: Config, Credential, Engine, KotClockInError, KotClockOutError, KotRecordError, Logger, Mailer, Option, Selector

Constant Summary collapse

VERSION =
'2.1.0'

Class Method Summary collapse

Class Method Details

.configureObject

Parses command line options, configures Kobot, and finally ensures required credentials are loaded properly and ready to be in use.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/kobot.rb', line 29

def configure
  options = Option.parse!
  Config.configure do |config|
    config.clock                 = options[:clock].to_sym
    config.loglevel              = options[:loglevel]&.to_sym || :info
    config.dryrun                = options[:dryrun]
    config.force                 = options[:force]
    config.skip                  = options[:skip] || []
    config.auto_skip             = options[:auto_skip]
    config.auto_skip_without     = options[:auto_skip_without] || '裁量労働'

    config.kot_url               = 'https://s2.kingtime.jp/independent/recorder/personal/'
    config.kot_timezone_offset   = '+09:00'
    config.kot_date_format       = '%m/%d'

    config.gmail_notify_enabled  = options[:notify]
    config.gmail_notify_to       = options[:to]
    config.gmail_notify_subject  = "[#{Module.nesting.last}] Notification"
    config.gmail_smtp_address    = 'smtp.gmail.com'
    config.gmail_smtp_port       = 587

    config.browser_headless      = options[:headless]
    config.browser_geolocation   = options[:geolocation]
    config.browser_wait_timeout  = 10

    config.credentials_file      = File.join(Dir.home, ".#{File.basename(__FILE__, File.extname(__FILE__))}")
  end
  Credential.load!
end

.loggerObject



59
60
61
# File 'lib/kobot.rb', line 59

def logger
  @logger ||= Logger.new
end

.runObject



18
19
20
21
22
23
24
25
# File 'lib/kobot.rb', line 18

def run
  configure
  Engine.new.start
rescue StandardError => e
  logger.error e.message
  logger.error e.backtrace
  Mailer.send e.message
end