Parse dates from CardDAV
We’re now correctly building an array of names and birthdates from CardDAV data
This commit is contained in:
parent
a73e0e7a0b
commit
b4cc830bf8
|
@ -6,22 +6,41 @@ class Birthdaze < Thor
|
||||||
desc "generate", "Generate calendars"
|
desc "generate", "Generate calendars"
|
||||||
def generate
|
def generate
|
||||||
puts "Generate calendars"
|
puts "Generate calendars"
|
||||||
auth(config["url"], config["username"], config["password"])
|
birthdays
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def config
|
def config(config_file = "#{ENV["HOME"]}/.config/birthdaze.yaml")
|
||||||
config_file = "#{ENV["HOME"]}/.config/birthdaze.yaml"
|
|
||||||
unless File.file?(config_file)
|
unless File.file?(config_file)
|
||||||
puts "Please add a configuration file"
|
puts "Please add a configuration file"
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@config ||= YAML.load_file(config_file)
|
@config ||= YAML.load_file(config_file)
|
||||||
end
|
end
|
||||||
|
|
||||||
def auth(url, username, password)
|
def client(url: config["url"], username: config["username"], password: config["password"])
|
||||||
config
|
@client ||= Carddav::Client.new(url, username, password)
|
||||||
client = Carddav::Client.new(url, username, password)
|
end
|
||||||
|
|
||||||
|
def birthdays
|
||||||
|
birthdays = []
|
||||||
|
client.cards.each do |card|
|
||||||
|
card = card.parsed.to_s
|
||||||
|
birthday = birthday_regex.match(card)[1] if birthday_regex.match?(card)
|
||||||
|
name = name_regex.match(card)[1] if name_regex.match?(card)
|
||||||
|
birthdays << [ name, birthday ] if name && birthday
|
||||||
|
end
|
||||||
|
birthdays
|
||||||
|
end
|
||||||
|
|
||||||
|
def birthday_regex
|
||||||
|
# We need the dash for dates which don’t specify a year
|
||||||
|
/.*BDAY.*:([\d-]*).*/
|
||||||
|
end
|
||||||
|
|
||||||
|
def name_regex
|
||||||
|
/FN.*:(.*)/
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue