parent
4b108e9328
commit
0160b8abd9
|
@ -1,4 +1,5 @@
|
||||||
require "carddav"
|
require "carddav"
|
||||||
|
require "digest"
|
||||||
require "icalendar"
|
require "icalendar"
|
||||||
require "thor"
|
require "thor"
|
||||||
require "yaml"
|
require "yaml"
|
||||||
|
@ -58,13 +59,14 @@ class Birthdaze < Thor
|
||||||
|
|
||||||
@calendar = Icalendar::Calendar.new
|
@calendar = Icalendar::Calendar.new
|
||||||
birthdays.each do |birthday|
|
birthdays.each do |birthday|
|
||||||
@calendar.event do |event|
|
event = Icalendar::Event.new
|
||||||
|
event.uid = uid(birthday)
|
||||||
event.dtstart = Icalendar::Values::Date.new(start_date(birthday))
|
event.dtstart = Icalendar::Values::Date.new(start_date(birthday))
|
||||||
event.dtend = Icalendar::Values::Date.new(end_date(birthday))
|
event.dtend = Icalendar::Values::Date.new(end_date(birthday))
|
||||||
event.summary = summary(birthday)
|
event.summary = summary(birthday)
|
||||||
event.description = description(birthday)
|
event.description = description(birthday)
|
||||||
event.rrule = "FREQ=YEARLY;"
|
event.rrule = "FREQ=YEARLY;"
|
||||||
end
|
@calendar.add_event(event)
|
||||||
end
|
end
|
||||||
@calendar.publish
|
@calendar.publish
|
||||||
end
|
end
|
||||||
|
@ -80,6 +82,13 @@ class Birthdaze < Thor
|
||||||
date.strftime("%Y%m%d")
|
date.strftime("%Y%m%d")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Format a deterministic UID for the event so it isn’t re-added every time the calendar is re-generated
|
||||||
|
def uid(birthday)
|
||||||
|
uid = Digest::SHA2.hexdigest("#{birthday[:name]}#{birthday[:day]}#{birthday[:month]}")[0..35]
|
||||||
|
uid[8] = uid[13] = uid[18] = uid[23] = '-'
|
||||||
|
uid
|
||||||
|
end
|
||||||
|
|
||||||
def summary(birthday)
|
def summary(birthday)
|
||||||
"🎂 #{birthday[:name]}’s birthday"
|
"🎂 #{birthday[:name]}’s birthday"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue