Class: Availability::Application

Inherits:
Object
  • Object
show all
Defined in:
lib/availability/application.rb

Overview

Coordinates configuration, calendar ingestion, calculation, and publishing.

Constant Summary collapse

DEFAULT_CLOCK =
-> { Time.now.utc }
DEFAULT_FAVICON_PATH =
Assets.favicon_path

Instance Method Summary collapse

Constructor Details

#initialize(config_path:, output_dir:, template_path:, output: $stdout, clock: DEFAULT_CLOCK, fetcher: CalendarFetcher.new, favicon_path: DEFAULT_FAVICON_PATH) ⇒ Application

Returns a new instance of Application.



9
10
11
12
13
14
15
16
17
18
# File 'lib/availability/application.rb', line 9

def initialize(config_path:, output_dir:, template_path:, output: $stdout, clock: DEFAULT_CLOCK,
               fetcher: CalendarFetcher.new, favicon_path: DEFAULT_FAVICON_PATH)
  @config_path = config_path
  @output_dir = output_dir
  @template_path = template_path
  @favicon_path = favicon_path
  @output = output
  @clock = clock
  @fetcher = fetcher
end

Instance Method Details

#runObject



20
21
22
23
24
25
26
27
28
# File 'lib/availability/application.rb', line 20

def run
  config = Config.load(@config_path)
  now = @clock.call.utc
  today = config.timezone.to_local(now).to_date
  days = config.enabled ? calculate_days(config, now, today) : disabled_days(config, now)

  publish(config, now, today, days)
  true
end