This tool processes ics (iCal) files:
cat: concatenation (for duplicate events, report only the last occurrence)remove-prop: strip out blocklisted propertieskeep-prop: strip out properties unless passlistedset-prop: overwrite propertiestz-subst: substitute timezone nameslimit: bound number of events in output
Concatenation:
icalm cat foo.ics bar.ics > out.ics
Redacting event summaries:
icalm -i foo.ics set-prop SUMMARY REDACTED
Removing event locations:
icalm -i foo.ics remove-prop LOCATION
Piplining:
icalm cat foo.ics bar.ics | icalm remove-prop LOCATION | icalm -o out.ics set-prop SUMMARY REDCATED
ics (icalendar, iCal) files seem to be the only unversal (albeit
read-only) calendar view supported by all major calendar providers.
However, ics files aren't always in the ideal format for export to
e.g. Google Calendar or Outlook:
- Calendars may be stored in multiple
icsfiles (e.g., byradicale), while Google Calendar and Outlook will import only a singleislink at a time - Calendars may store information that we don't want to make public (e.g., phone numbers or Zoom links).
icalm aims to address these challenges by offering a fast interface
for merging and processing
icalmsupports the (presumably) most common use cases- The
icalmimplementation is small and provides anEventProcessorinterface that should make it easy to facilitate many other use cases (filtering out events, conditional event transformation, ...)