class Miser::CLI

Constants

DATE_FORMAT

Public Instance Methods

check(driver, *login) click to toggle source
# File lib/miser/cli.rb, line 18
def check(driver, *login)
  console = Miser::Report::Console.new
  movements = movements(driver, *login)
  report = Miser::Report.new(movements, date)
  console.deliver(report)
end
interactive() click to toggle source
# File lib/miser/cli.rb, line 39
def interactive
  puts "Please enter what to run and press enter:"
  mode = options[:echo] ? :cooked : :noecho
  command = STDIN.send(mode, &:gets).strip
  cmd = "#{Process.argv0} #{command}"
  exec cmd
end
report(driver, *login) click to toggle source
# File lib/miser/cli.rb, line 30
def report(driver, *login)
  mail = Miser::Report::Mailgun.new(options[:api_key], options[:from], options[:to])
  movements = movements(driver, *login)
  report = Miser::Report.new(movements, date)
  mail.deliver(report)
end
schedule(time, *args) click to toggle source
# File lib/miser/cli.rb, line 48
def schedule(time, *args)
  hour, minute = time.split(':')
  scheduler = Rufus::Scheduler.new

  line = "#{minute || '*'} #{hour || '*'} * * *"
  scheduler.cron line do
    system(Process.argv0, *args)
  end

  Process.setproctitle "miser schedule #{line}"
  puts "Scheduled to be executed every #{line}"

  scheduler.join
end

Private Instance Methods

date() click to toggle source
# File lib/miser/cli.rb, line 78
def date
  DateTime.now - options[:days]
end
days() click to toggle source
# File lib/miser/cli.rb, line 74
def days
  options[:days].to_f
end
movements(driver, *login) click to toggle source
# File lib/miser/cli.rb, line 65
def movements(driver, *login)
  driver = Miser::Driver[driver].new
  driver.login(*login)

  movements = driver.movements(date)
  movements.select{ |m| m.days_from_now < days && m.debit? }
end
now() click to toggle source
# File lib/miser/cli.rb, line 82
def now
  DateTime.now
end