require "./lib/timeboss"
require "./lib/timeboss/calendars"

namespace :timeboss do
  namespace :calendars do
    TimeBoss::Calendars.each do |entry|
      namespace entry.name do
        desc "Evaluate an expression for the #{entry.name} calendar"
        task :evaluate, %i[expression] => ["timeboss:init"] do |_, args|
          puts entry.calendar.parse(args[:expression])
        end

        desc "Open a REPL with the #{entry.name} calendar"
        task repl: ["timeboss:init"] do
          require "shellable"
          Shellable.open(entry.calendar)
        end

        task shell: ["timeboss:calendars:#{entry.name}:repl"]
      end
    end
  end
end