Skip to content

Releases: SmileyChris/elvanto-cli

Release list

v0.2.0

Choose a tag to compare

@SmileyChris SmileyChris released this 24 Jun 10:51

What's new

  • services song-usage command — Shows which songs have been sung the least across any date range, including who led each time. --max-uses controls the threshold (default: 2).

  • --count flag on songs 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_to but Elvanto uses start/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

Choose a tag to compare

@SmileyChris SmileyChris released this 20 May 04:15

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 / --ccli to add columns.
  • Per-song detail with songs show <id>; --full expands metadata, --json --files for 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 categories lists categories.

Services

  • services list covers the last six months by default; pick --from / --to for any window.
  • services people <id> shows the volunteer roster grouped by position — --in filters by org tree, --email adds an email column, --hide-unfilled drops empty slots.

People

  • people list for the active directory; --in filters, --json includes archived people and the full department tree per person.
  • people org shows 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/Vocals path.
  • Ambiguous names fail with a disambiguation table; typos get top-3 Did you mean? suggestions; unique-prefix matches resolve automatically (so --category Contemporary finds Contemporary (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 clear manage the keyring; auth status reports the source and verifies against Elvanto.

Output

  • Every list command supports --json for a stable, programmatic contract, and --id short|long|hidden to 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-env opts out entirely.

Pre-built binaries for Linux x86_64, macOS (arm64 + x86_64), and Windows x86_64 are attached below.

Docs: https://smileychris.github.io/elvanto-cli/