Repository navigation
v0.10.7
evnx v0.10.7
The patch for the three commands about evnx itself — commands, completions
and update (package R-surface) — plus one HTTP client and one cargo command
where there were several.
evnx update --checkexits 1 when a newer release exists (it was 0 either
way) and 2 when it could not check. It gains--json.evnx completionstakes its shell from a fixed list, so an unknown one is
clap's usage error (exit 2, with the list) instead of evnx's "unsupported
shell" line and the "No verdict" banner.evnx update -qprints only the upgrade command, andupdate --check -qthe
status line and the command.--check's "asking api.github.com…" line is on
stderr.
commands (alias surface)
- The closing line counts what it lists (I-196):
20 commands (83 with sub-commands).It said83 commandsunder a list of 20. - The warning for a build without
cloudnames no release (I-197). It said
pip install evnxlacked the cloud commands "up to and including 0.9.0",
which is history and would be wrong on any later such build. It points at
evnx updatefor the channels, and atcargo install evnx --all-features. completionsandupdatehave a guide entry, so--jsonfills their
docs_urland their--helpends with the guide (I-195). Every top-level
command has one.surfaceis the command's name before 0.10.0 and still works as an alias
(D-138: no entry said so).-qhas no effect, as before, and--helpnow
says so (DEC-SF5).
completions
evnx completions bash | head -1exits 141, not 101 (I-185).
clap_complete panicked on the closed pipe with a message the broken-pipe
handler did not match.- Five shells, in any case:
bash,zsh,fish,powershell, andelvish,
which is new (I-194, DEC-SF6).--helplists them, says where each shell
reads the script, and links the guide. The scripts complete the shell names
afterevnx completions(they offered<SHELL>).
update
- The cargo upgrade keeps every feature (I-199):
cargo install evnx --all-features --force. It was--features cloud --force, which rebuilt an--all-featuresinstall withoutmigrate,
backupandrestore. - A pip install is recognised by what pip leaves (I-193): a virtual
environment of any name (pyvenv.cfgbesidebin/orScripts\), or an
evnx-*.dist-inforecord under the prefix'ssite-packages.pip install --userand system pip put the binary in~/.local/binand/usr/local/bin,
which read as the install script, so pip users were told to run the curl
installer. With no such evidence, those two folders get both commands.
Checked against the published 0.10.5 wheel. --checkanswers with its exit code (I-198, DEC-SF4): 0 for the latest
release or newer, 1 when a newer one exists, 2 when it could not check.
--check --jsonprintsschema(1),installed,latest,status,
channel,commandandrelease_url. A release with no page link still
answers.--helpnames the seven channels it detects — it said "nine install
channels" and named none (D-140) — and lists the exit codes.- The
--checkmessage for a build with no network support names
cargo install evnx --all-features(it said--features cloud). - Debug builds read
EVNX_UPDATE_URL, for the tests; a release binary ignores
it and always asks api.github.com.
Every command: --help of a build without every feature
- The note at the end of
evnx --helpin acargo install evnxbuild names
what each feature adds (withorg, which it left out) and gives one cargo
line,--all-features, instead of one per feature.
Release checks
scripts/check-build-features.sh <evnx>reads the feature list from
evnx commands --jsonand exits 1 naming what is missing (I-200). The PyPI
wheel check uses it instead of grepping--helpfor four command names, which
could not seemigrateorbackup; the npm check runs it on the global
install;docs/RELEASING.mduses it for every channel.
npm
- A slow registry no longer fails a correct npm release, and re-running a
failed one finishes it (I-256). v0.10.6 uploaded all five platform packages,
then gave up after 300 s on one that npm showed 8.5 minutes after its publish;
the re-run stopped on that package, which npm was still processing, and the
wrapper step could not be re-run at all. Both publishes now go through
scripts/npm-publish-packages.sh: a version already in the registry is
skipped, an authentication failure (npm's404 Not Found - PUTincluded)
stops at once and namesNPM_TOKEN, and any other failure waits for the
version to appear. Each phase shares one deadline — 20 minutes for the five
platform packages, 20 for the wrapper, 10 forlatest— through
npm-await.sh's newNPM_AWAIT_DEADLINE, and the job stops after an hour.
Docs
- README: sections for
evnx commands,evnx completionsandevnx update;
Verify runsevnx commands(D-137, D-142); the cargo line for cloud support
is--all-features, the oneupdateprints (D-141).
Shared code
One definition each, where commands had their own:
core::build: the feature list (commands), andCARGO_INSTALLand
CARGO_UPGRADE, the cargo command every message names. Five copies carried
three flag sets; a test now fails on any othercargo install evnx --….core::http(withnet): the HTTP client builder andtransport_reason, for
update --checkand every cloud command, whose copies differed only in the
timeout they named. The private-CA fix (I-192, DEC-SF1, still open) will land
there once.utils::term::write_stdout(): writes an answer and exits 141 on a closed
pipe, for output that does not pass throughprintln!.- Tests: one
commands --jsonreader (three files had their own), a
closed-stdout runner, and the binary placed in a fake install location.
Library
Commands::Completions { shell }is aclap_complete::Shell, not aString.commands::update::Channel::ScriptisChannel::ScriptOrPip;
Channel::candidates(),Channel::id()andChannel::from_install()are
new.commands::update::runtakesjsonand returns aVerdict.
Installation
Linux / macOS (shell script)
curl -sSL https://raw.githubusercontent.com/urwithajit9/evnx/main/scripts/install.sh | bashHomebrew (macOS and Linux)
brew install urwithajit9/evnx/evnxScoop (Windows, user-local)
scoop bucket add evnx https://github.com/urwithajit9/scoop-evnx
scoop install evnxWinget (Windows, system-wide)
winget install urwithajit9.evnxnpm / Node.js
npm install -g @evnx/cliPython (pipx)
pipx install evnxCargo
cargo install evnx --all-features
cargo installcompiles from source withdefault = [], so plain
cargo install evnxgives you a binary without theauth,
vaultandcloudcommands. Every other channel above ships them
already — the binaries are built with--all-features.
Checksums
SHA256 checksums are provided for each binary. Verify after download:
sha256sum -c evnx-*.tar.gz.sha256What's Changed
- surface 0.10.7 (R-surface): update --check exit codes and --json, pip detection, five shells, one HTTP client by @urwithajit9 in #195
- chore(release): 0.10.7 by @urwithajit9 in #196
Full Changelog: v0.10.6...v0.10.7
npm / Node.js
npm install -g @evnx/cli # global install
npx @evnx/cli --version # zero-install usage
npm install --save-dev @evnx/cli # project dev dependency