Releases: SmileyChris/elvanto-cli
Release list
v0.2.0
What's new
-
services song-usagecommand — Shows which songs have been sung the least across any date range, including who led each time.--max-usescontrols the threshold (default: 2). -
--countflag onsongs list— Adds a count column showing how many times each song has appeared in services. Pairs naturally with--last-used.
Fixes
-
Services list now correctly returns past services. The API parameter was
date_from/date_tobut Elvanto usesstart/end. Previously the services list silently returned only future services. -
Deduped song counts — Songs used in a service are now counted once, even if referenced in multiple places.
Docs & tooling
- Install instructions use
/releases/latest/download/URLs — never stale. - Release assets are versionless so the "latest" URLs always work.
- Site polish: GitHub link in header, per-page edit/view buttons.
v0.1.0
Initial release of elvanto-cli, a Rust command-line interface for the Elvanto API. Read-only across songs, services, and people — built for scriptable terminals and worship-team workflows.
Songs
- Browse with
songs list— paginates the full catalog, supports--category(by id or name),--used-within/--not-used-within(e.g.6m,14d),--last-used(sorts most-recent-first), and--album/--cclito add columns. - Per-song detail with
songs show <id>;--fullexpands metadata,--json --filesfor attachment payloads. - Lyrics and chord charts via
songs lyrics/songs chart.--arrangement <id>picks a non-default arrangement;--transpose <key|±offset>accepts named keys (C,F#,Bb) or semitone offsets (+2,-3). songs categorieslists categories.
Services
services listcovers the last six months by default; pick--from/--tofor any window.services people <id>shows the volunteer roster grouped by position —--infilters by org tree,--emailadds an email column,--hide-unfilleddrops empty slots.
People
people listfor the active directory;--infilters,--jsonincludes archived people and the full department tree per person.people orgshows the full department / sub-department / position tree.
Lookups: ids, names, or paths
--in,--category,--arrangement, and positional<ID>args all accept a full UUID, the short first-block (02b06b47), or a name /Music Team/Vocalspath.- Ambiguous names fail with a disambiguation table; typos get top-3
Did you mean?suggestions; unique-prefix matches resolve automatically (so--category ContemporaryfindsContemporary (0-5 Years Old)). - A parent match (e.g.
--in "Music Team") implicitly includes the whole subtree.
Authentication
- Key resolution:
ELVANTO_API_KEY→ repo-local.env→ OS keyring (Secret Service / Keychain / Credential Manager). auth login/auth clearmanage the keyring;auth statusreports the source and verifies against Elvanto.
Output
- Every list command supports
--jsonfor a stable, programmatic contract, and--id short|long|hiddento control the id column. - Per-subcommand
ELVANTO_<SUBCOMMAND>env vars inject default flags (ELVANTO_SONGS_LIST="--category Contemporary --used-within 6m --last-used"). Manual flags suppress the injection; a stderr note tells you when defaults kicked in or got skipped.--no-envopts out entirely.
Pre-built binaries for Linux x86_64, macOS (arm64 + x86_64), and Windows x86_64 are attached below.