let ical2rem ical_file = let ic = open_in ical_file in let n = in_channel_length ic in let s = Bytes.create n in really_input ic s 0 n; close_in ic; let cal_or_error = Icalendar.parse (Bytes.unsafe_to_string s) in match cal_or_error with | Error e -> prerr_endline ("Error parsing iCalendar file: " ^ e) | Ok (_, components) -> begin let events = ref 0 in List.iter (fun comp -> match comp with | `Event event -> events := !events + 1; let uid = Utils.get_uid event in Printf.printf "󰧓 ⇒ UID: %s\n" uid; Printf.printf "%s\n\n\n" (Icalendar.show_component comp) | _ -> () (* Ignore non-event components *)) components; Printf.printf "\nEvents: %d\n" !events; let events = List.filter_map (function | `Event ev -> Some ev | _ -> None) components in let _reminders = List.map EventTransformer.remind_of_event events in () end let () = if !Sys.interactive then () else exit (CommandLine.main ical2rem)