Skip to content
kucendroPublic

About

Timetable directly in your calendar

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

One-way sync from a public Bakaláři timetable into a dedicated Google Calendar.

ci release publish



Documentation: https://kucendro.github.io/lazybaka/

Install

macOS and Linux:

brew tap kucendro/lazybaka https://github.com/kucendro/lazybaka
brew install bakasync

Windows:

scoop bucket add lazybaka https://github.com/kucendro/lazybaka
scoop install bakasync

Anything else: Releases. Static binary, .env.example, this readme, SHA256SUMS. Linux and macOS on Intel and ARM, Windows on x86-64. On NixOS use the module.

Setup

In Google:

  1. Enable the Calendar API in a GCP project.
  2. Create a service account. Download its JSON key.
  3. Create a calendar for bakasync alone.
  4. Share it with the service account e-mail. Permission: Make changes to events.

Then:

$ bakasync init
config  ~/.config/bakasync/config.env  (created)
key     ~/.config/bakasync/service-account.json  (missing)

$ mv ~/Downloads/project-a1b2c3.json ~/.config/bakasync/service-account.json
$ chmod 600 ~/.config/bakasync/service-account.json

Fill in three values:

BAKASYNC_BASE_URL=https://bakalari.example.cz/bakaweb
BAKASYNC_CLASS_ID=1A
BAKASYNC_CALENDAR_ID=abc123@group.calendar.google.com

BAKASYNC_CLASS_ID is the id in the timetable URL, not the class name. Every other variable is in .env.example and in the docs.

Run

bakasync doctor    # check config, key, timetable, calendar
bakasync --plan    # print what the next sync would change, write nothing
bakasync --once    # sync once, ignore the interval
bakasync           # sync on BAKASYNC_INTERVAL, or once if unset

doctor and --plan never write. Set BAKASYNC_INTERVAL=10min to leave it running.

It only ever touches events it created, so a calendar of its own stays a hard requirement and an exam you added by hand survives.

Development

nix develop
cargo test
nix build .#bakasync
mdbook serve docs --open

lefthook runs fmt, clippy, the test suite and the host guard on pre-push, and CI runs the same four. Push a vX.Y.Z tag matching Cargo.toml to build the five release targets and update the Homebrew formula and Scoop manifest on main.

More in the docs.


Buy me a matcha

About

Timetable directly in your calendar

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages