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.