Ungana
Ungana is a Python CLI tool for creating customized
iCalendar (.ics) files.
Requirements
- Python 3.8+
- pip 20.0+
Setup (Recommended)
Create a Virtual Environment
First, create and activate a virtual environment to isolate the project dependencies:
python3 -m venv venvsource venv/bin/activate
Installation
Editable Mode
cd ungana
pip install -e .Without Installation
python3 -m ungana.runnable.ungana_cal_cliCommands
1.Create
To create an event entry, the create command can be used
as:
create -s SUMMARY [--sf SUMMARY_FILE] -d DESCRIPTION [--df DESCRIPTION_FILE] --start START -l LOCATION -o ORGANIZER --tzid TZID [--end END] [--duration DURATION]
Command Arguments
| Option | Required | Input Type | Description | Format Example |
|---|---|---|---|---|
-s, --summary |
Yes | Freeform text | Event title (short title shown in display). | "Team Meeting" |
-sf, --summary-file |
No | File path string | File containing the event summary. | summary.txt |
-d, --description |
Yes | Freeform text | Event details (brief, concise description). | "Quarterly review" |
-df, --description-file |
No | File path string | File containing the event description. | description.txt |
--start |
Yes | Datetime | Start time of the event. | "10-09-2025 14:00" (or ISO format) |
--end |
No | Datetime | End time of the event. | "10-09-2025 16:00" |
--duration |
No | Duration string | Duration of the event (alternative to --end). |
"PT2H" (ISO 8601) |
-l, --location |
Yes | Freeform string | Event venue or location. | "Conference Room A" |
-o, --organizer |
Yes | Freeform string | Organizer’s contact (e.g., name or email). | "events@company.com" |
--tzid |
Yes | Freeform string | Timezone identifier | "Africa/Nairobi" |
-f, --file |
No | Freeform string | Output filename for the generated iCalendar file. If not provided, a safe timestamped filename (e.g., event_20250820_083410.ics) will be used. |
"team_meeting.ics" |
2.Edit
Using the edit command, you can modify an existing ical
file's fields.
edit -i ICAL_FILE_Path -s [SUMMARY] -d [DESCRIPTION] --start [START] -l [LOCATION] -o [ORGANIZER] ...
| Option | Required | Description | Format Example |
|---|---|---|---|
-i, --ical |
Yes | Path to ical file | "/events/ical.ics" |
-a, --all |
No | Apply to all events in the iCal file. If omitted, only the first event is modified. | - |
-c, --contact |
No | Contact information | "events@abc.org" |
-p, --poster |
No | Event headline image | "events/posters/poster.png" |
-ld, --long |
No | Exhaustive description of the event | "events/team/event_description.txt" |