diff --git a/Cargo.lock b/Cargo.lock index 6fc7c3b2b9..2b7412c4e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9651,9 +9651,9 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "usage-lib" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "188a4fb4ad9e81729867ebb83ccbc06f850a06362c2467eea0f268fe4f6df609" +checksum = "bc055ae0a824bf9e409ee8e175ec224d5e1b79325557f51967eea0f103e5dc03" dependencies = [ "clap", "heck", diff --git a/completions/_mise b/completions/_mise index ef959d916b..eee79a08fc 100644 --- a/completions/_mise +++ b/completions/_mise @@ -27,15 +27,32 @@ _mise() { if [[ ! -f "$spec_file" ]]; then mise usage >| "$spec_file" fi - local -a completions=() inserts=() - local needs_menu=0 display insert - while IFS=$'\t' read -r display insert; do - completions+=("$display") - inserts+=("$insert") - [[ "$insert" == "'"* ]] && needs_menu=1 + local -a values=() descs=() inserts=() + local needs_menu=0 line + while IFS= read -r line; do + local -a parts=("${(@ps:\t:)line}") + values+=("${parts[1]}") + descs+=("${parts[2]}") + inserts+=("${parts[3]}") + [[ "${parts[3]}" == "'"* ]] && needs_menu=1 done < <(command usage complete-word --shell zsh -f "$spec_file" -- "${(Q)words[@]}") (( needs_menu )) && compstate[insert]=menu - _describe 'completions' completions inserts -U -Q -S '' + if (( ${#inserts[@]} )); then + local -a _usage_display=() + local _usage_i _usage_max=0 _usage_v _usage_pad + for _usage_v in "${values[@]}"; do + (( ${#_usage_v} > _usage_max )) && _usage_max=${#_usage_v} + done + for ((_usage_i=1; _usage_i<=${#values[@]}; _usage_i++)); do + if [[ -n "${descs[_usage_i]}" ]]; then + _usage_pad=$(( _usage_max - ${#values[_usage_i]} )) + _usage_display+=("${values[_usage_i]}${(l:_usage_pad:: :)} -- ${descs[_usage_i]}") + else + _usage_display+=("${values[_usage_i]}") + fi + done + compadd -l -d _usage_display -U -Q -S '' -a inserts + fi return 0 } diff --git a/mise.lock b/mise.lock index 723a6acb3f..9aa48c1e21 100644 --- a/mise.lock +++ b/mise.lock @@ -1003,44 +1003,44 @@ url = "https://github.com/tamasfe/taplo/releases/download/0.10.0/taplo-windows-x url = "https://github.com/tamasfe/taplo/releases/download/0.10.0/taplo-windows-x86_64.zip" [[tools.usage]] -version = "3.4.0" +version = "3.5.0" backend = "aqua:jdx/usage" [tools.usage."platforms.linux-arm64"] -checksum = "sha256:5cea2993383ccbbdbf9693bec484c47fc3cbcff75ec167618e1e775e5df9ba19" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-aarch64-unknown-linux-musl.tar.gz" +checksum = "sha256:a0aab1ecbae1bc48aa3aac6ebb508f5df44a77122bb8d6ea23b86ee9fd699518" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-aarch64-unknown-linux-musl.tar.gz" [tools.usage."platforms.linux-arm64-musl"] -checksum = "sha256:5cea2993383ccbbdbf9693bec484c47fc3cbcff75ec167618e1e775e5df9ba19" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-aarch64-unknown-linux-musl.tar.gz" +checksum = "sha256:a0aab1ecbae1bc48aa3aac6ebb508f5df44a77122bb8d6ea23b86ee9fd699518" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-aarch64-unknown-linux-musl.tar.gz" [tools.usage."platforms.linux-x64"] -checksum = "sha256:1a54260df50f1764bc8cbabf8763f2a6314c5025d3b06b512d02898eb28768b3" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-x86_64-unknown-linux-musl.tar.gz" +checksum = "sha256:d686d7acff1fc5ffd04be2fefccd342564648d353609fab81e22a3672446c4f0" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-x86_64-unknown-linux-musl.tar.gz" [tools.usage."platforms.linux-x64-baseline"] -checksum = "sha256:1a54260df50f1764bc8cbabf8763f2a6314c5025d3b06b512d02898eb28768b3" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-x86_64-unknown-linux-musl.tar.gz" +checksum = "sha256:d686d7acff1fc5ffd04be2fefccd342564648d353609fab81e22a3672446c4f0" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-x86_64-unknown-linux-musl.tar.gz" [tools.usage."platforms.linux-x64-musl"] -checksum = "sha256:1a54260df50f1764bc8cbabf8763f2a6314c5025d3b06b512d02898eb28768b3" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-x86_64-unknown-linux-musl.tar.gz" +checksum = "sha256:d686d7acff1fc5ffd04be2fefccd342564648d353609fab81e22a3672446c4f0" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-x86_64-unknown-linux-musl.tar.gz" [tools.usage."platforms.linux-x64-musl-baseline"] -checksum = "sha256:1a54260df50f1764bc8cbabf8763f2a6314c5025d3b06b512d02898eb28768b3" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-x86_64-unknown-linux-musl.tar.gz" +checksum = "sha256:d686d7acff1fc5ffd04be2fefccd342564648d353609fab81e22a3672446c4f0" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-x86_64-unknown-linux-musl.tar.gz" [tools.usage."platforms.macos-arm64"] -checksum = "sha256:e9f7cd9038fec6352eaa001903414edc95bb77386a9573fde21be17991f3f719" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-universal-apple-darwin.tar.gz" +checksum = "sha256:dcb1022d2e6cbe0070e3259a48a5e058ca64ecc707b6901b929b388b95bb322c" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-universal-apple-darwin.tar.gz" [tools.usage."platforms.windows-x64"] -checksum = "sha256:2272ad0d264b99986ef8e3d537f774f046db5fe096e8a9375fbb1482f0934e8c" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-x86_64-pc-windows-msvc.zip" +checksum = "sha256:4647b8894520c4ab8d8424950fd7bddd2b76aa6c71bdedc90b2464985ab3b8cd" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-x86_64-pc-windows-msvc.zip" [tools.usage."platforms.windows-x64-baseline"] -checksum = "sha256:2272ad0d264b99986ef8e3d537f774f046db5fe096e8a9375fbb1482f0934e8c" -url = "https://github.com/jdx/usage/releases/download/v3.4.0/usage-x86_64-pc-windows-msvc.zip" +checksum = "sha256:4647b8894520c4ab8d8424950fd7bddd2b76aa6c71bdedc90b2464985ab3b8cd" +url = "https://github.com/jdx/usage/releases/download/v3.5.0/usage-x86_64-pc-windows-msvc.zip" [[tools.wait-for-gh-rate-limit]] version = "1.1.1" diff --git a/mise.usage.kdl b/mise.usage.kdl index b89b66c227..e64d873261 100644 --- a/mise.usage.kdl +++ b/mise.usage.kdl @@ -1,4 +1,4 @@ -min_usage_version "3.4" +min_usage_version "3.5" name mise bin mise about "Dev tools, env vars, and tasks in one CLI" diff --git a/src/cli/usage.rs b/src/cli/usage.rs index 05bd08f36f..61588c2904 100644 --- a/src/cli/usage.rs +++ b/src/cli/usage.rs @@ -86,10 +86,11 @@ impl Usage { promote_orphan_shorts(tasks_run); } - // Require usage >= 3.4, the release that ships the jdx/usage#649 parser fix - // (see jdx/usage#652). This guards old `usage` CLIs from silently - // re-triggering the mise#10069 mis-parse without the fix. - let min_version = r#"min_usage_version "3.4""#; + // Require usage >= 3.5, the release that ships zsh colon completion + // fixes for task names and insert strings (see jdx/usage#666 and + // jdx/usage#670). This guards old `usage` CLIs from silently + // re-triggering the broken colon completion behavior. + let min_version = r#"min_usage_version "3.5""#; let extra = include_str!("../assets/mise-extra.usage.kdl").trim(); println!("{min_version}\n{}\n{extra}", spec.to_string().trim()); Ok(())