aboutsummaryrefslogtreecommitdiff
path: root/.gitignore
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-19 20:46:23 -0400
committerCraig Jennings <c@cjennings.net>2026-05-19 20:46:23 -0400
commitd6a995b9090ca35190e59e765d5c14daf887e9d8 (patch)
tree9069e0b49068690dad26d69a6cc3a5e1d46f2b25 /.gitignore
parent8911d161f7ef38f8a1b03fba6316b71da1011174 (diff)
downloaddotemacs-d6a995b9090ca35190e59e765d5c14daf887e9d8.tar.gz
dotemacs-d6a995b9090ca35190e59e765d5c14daf887e9d8.zip
feat(calendar-sync): add Python helper for Google Calendar API sync
Google's .ics export drops per-occurrence response statuses on recurring events. When OOO auto-declines a meeting, the master event keeps PARTSTAT=ACCEPTED and declined instances inherit it. The .ics path can't filter the declines out. The API path expands recurrences server-side via singleEvents=True, and each occurrence carries its own attendees[].self.responseStatus. scripts/calendar_sync_api.py fetches events and renders them as org entries. OAuth is one-time per account. The refresh token lives at ~/.config/calendar-sync/token-<account>.json under 0600. Output matches the existing .ics shape: heading sanitization, LOCATION/ORGANIZER/STATUS/URL property drawer, HTML-stripped descriptions, org timestamps with weekday abbreviations. I wrote 30 stdlib-unittest tests against fixture JSON, covering rendering, filtering, timestamp formatting, and HTML cleanup. I left auth and HTTP uncovered — they're thin wrappers around the Google client libraries, best checked by running the script once after OAuth setup. docs/calendar-sync-api-setup.org walks through the Google Cloud OAuth client setup and the per-account auth bootstrap. .gitignore picks up Python bytecode now that the project has a Python helper. The Elisp dispatch (:fetcher 'api routing in calendar-sync.el) lands in a follow-up commit.
Diffstat (limited to '.gitignore')
-rw-r--r--.gitignore4
1 files changed, 4 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 31f83172..0f9201c0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -86,6 +86,10 @@ history
# --- elisp ruleset ---
*.eln
+# Python bytecode caches (scripts/, tests/)
+__pycache__/
+*.pyc
+
# Emacs backup and auto-save files
*~
\#*\#