Read-only mirror of https://github.com/DCC-BS/mise-proton-pass-cli — Basel-Stadt. Issues & pull requests at the source.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tobias Bollinger 91f47e138e fix(ci): stylua formatting + idempotent plugin link
- Format hooks/available.lua and hooks/pre_install.lua so stylua --check passes
- Add --force to 'mise plugins link' in the test task so 'mise run ci'
  is idempotent across re-runs
2026-07-31 10:57:23 +02:00
.github/workflows inital commit 2026-07-30 09:53:30 +02:00
hooks fix(ci): stylua formatting + idempotent plugin link 2026-07-31 10:57:23 +02:00
.gitignore inital commit 2026-07-30 09:53:30 +02:00
.luarc.json inital commit 2026-07-30 09:53:30 +02:00
LICENSE inital commit 2026-07-30 09:53:30 +02:00
metadata.lua inital commit 2026-07-30 09:53:30 +02:00
mise.toml fix(ci): stylua formatting + idempotent plugin link 2026-07-31 10:57:23 +02:00
README.md inital commit 2026-07-30 09:53:30 +02:00
stylua.toml inital commit 2026-07-30 09:53:30 +02:00

mise-proton-pass-cli

A mise tool plugin that installs the Proton Pass CLI (pass-cli).

mise use -g pass-cli@latest
pass-cli --version

The plugin installs entirely inside mise-managed directories. It does not modify your shell rc files and does not write to /usr/local/bin, ~/.local/bin, or anywhere outside mise's install root.


How it works

The PreInstall hook reads Proton's versions.json, selects the asset for your OS/arch, and returns its URL + SHA-256. mise's Rust core then performs the HTTP download and verifies the checksum. PostInstall moves the binary to bin/pass-cli, marks it executable, and asserts pass-cli --version.

No curl, jq, or sha256sum are required at install time — mise does the fetching and verification itself.

Supported platforms

OS Arch Supported
Linux x86_64, aarch64 yes
macOS x86_64 (Intel), arm64 (Apple Silicon) yes
Windows x86_64 no (v1; the Windows asset is a .zip needing extra handling)

Versions

versions.json publishes exactly one version — the current latest (e.g. 2.2.3). As a result:

  • pass-cli@latest — resolves to the current published version.
  • pass-cli@2.2.3 / @2.2 / @2 — prefix-matched against the current version.
  • pass-cli@2.2.0 (any older) — fails with a clear message; Proton does not publish historical versions.

This is a limitation of Proton's distribution, not the plugin.

Install (from GitHub)

mise plugins install pass-cli https://github.com/DCC-BS/mise-proton-pass-cli
mise install pass-cli@latest

Or in one step:

mise use -g pass-cli@latest

Usage

pass-cli --version
pass-cli --help
pass-cli login

See the Proton Pass CLI documentation for the full command reference.

Local development

git clone https://github.com/DCC-BS/mise-proton-pass-cli
cd mise-proton-pass-cli

# link the plugin from this checkout (the name must be "pass-cli")
mise plugins link pass-cli .

# what version does mise discover?
mise ls-remote pass-cli

# install + verify
mise install pass-cli@latest
mise exec pass-cli@latest -- pass-cli --version

# set globally
mise use -g pass-cli@latest
pass-cli --version

To iterate on a hook, re-run the install:

mise plugins uninstall pass-cli@<version>   # or: mise uninstall pass-cli@<version>
mise --debug install pass-cli@latest

Lint / smoke test (stylua is auto-provided by this repo's mise.toml):

mise install      # installs stylua
mise run lint     # stylua --check .
mise run test     # lint + link + install + --version

Negative test (version not published)

mise install pass-cli@2.2.0   # expect: Proton only publishes version '<current>'

Troubleshooting

  • unsupported platform — you are on Windows or an unsupported arch. v1 covers Linux/macOS on x86_64/aarch64 only.
  • versions.json returned HTTP <n> — network/proxy issue reaching proton.me. Check connectivity and retry.
  • --version verification failed — the downloaded binary did not run. Re-run with mise --debug install pass-cli@latest. mise verifies the SHA-256 before this step, so a failure here usually indicates a platform/arch mismatch.
  • Stale version list — mise caches the version list briefly; if you just published/expect a new version, re-link the plugin or wait for the cache to expire.

Design notes — why not the official installer?

Proton ships an official install.sh that respects PROTON_PASS_CLI_INSTALL_DIR. This plugin deliberately does not use it:

  • install.sh duplicates exactly what this plugin does (read versions.json, download, SHA-256-verify, copy the binary) and additionally requires curl and jq at install time.
  • mise's Rust core already downloads and verifies SHA-256, so the hooks need zero shell dependencies and stay fully within mise's install root.

Net result: fewer moving parts, fewer dependencies, identical integrity guarantees, and no writes outside mise-managed paths.

Publishing

  1. Push the repo to https://github.com/DCC-BS/mise-proton-pass-cli.
  2. Tag plugin releases (e.g. v1.0.0); bump version in metadata.lua.
  3. Users install via mise plugins install pass-cli https://github.com/DCC-BS/mise-proton-pass-cli.
  4. (Optional) submit to the mise registry so pass-cli resolves without a URL.

License

MIT — see LICENSE.