Popular: Data updated October 27, 2026

Categories

Internet1,356
Communication321
Audio & video898
Graphics & design539
Office & productivity1,124
Developer tools3,134
AI tools529
Security & privacy385
System tools3,114
Games523
Education & science239
Network & IT284

usage 7.0.0 download

A specification for CLIs

This is an older version. The current version is 7.0.1. usage 7.0.1 · Released:

Installer files 7.0.0

ArchitectureTypeScopeFile sizeDownloadSHA256
64-bit ZIP → Portable — — github.com VirusTotal
ARM64 ZIP → Portable — — github.com VirusTotal

Link and SHA256 come from the Windows Package Manager community manifest. Compare the hash of the downloaded file before running it.

Release notes

The derive macros now generate code against usage_rs directly instead of reading your Cargo.toml, usage generate fig has been removed, and the fields on argv metadata types are no longer public API. usage exec now accepts interpreter arguments, and this release also fixes how -- is handled by the shell runners and how multi-line examples are indented in help.
Breaking Changes
All of these come from #1532 (@jdx).
- The derive macros always generate paths through ::usage_rs. In 6.12, usage-derive parsed your Cargo.toml to work out how usage-rs was imported. That put toml and related crates into every downstream build. The macros no longer read the manifest, so toml is out of the dependency tree. If a derive can't find the facade crate, compilation fails with unresolved import usage_rs. To upgrade:
- Depend on usage-rs under its own name: usage-rs = { version = "7" }.
- If you import it under another name, such as usage = { package = "usage-rs", ... }, add #[usage(crate = usage)] to each derive that needs it. The attribute works on Cli, Args, Subcommands, ValueEnum, ArgGroup and Config, and you have to repeat it on every derive.
#[derive(usage::Cli)]
#[usage(crate = usage, bin = "ex")]
struct Ex { /* ... */ }
- If you depend directly on usage-argv, usage-derive, usage-config or usage-validation, also add usage-rs = { version = "7", default-features = false, features = ["spec"] }. Turn on the config or validation features if you use those crates, since they're now reached through usage_rs::config and usage_rs::validation.
- schema_from = T now always generates ::schemars. If you renamed the schemars dependency, change it back to its real name.
- The derives no longer look up workspace-inherited or target-specific dependencies.
- usage generate fig is removed. Fig shut down in 2024. Use usage generate completion <shell> instead.
- Fields on FlagMeta, CommandMeta and ArgMeta in usage-argv are now #[doc(hidden)]. Their struct layout is no longer covered by semver. Use the existing accessor methods instead, for example flag.env_fallback() rather than flag.env_fallback.

Added
- (cli) usage exec takes a quoted interpreter followed by its own arguments, and splits them the way a shell would (#1537, @jdx). Before this, there was no shebang form for interpreters that need flags before the script path, such as Deno's run and its permission flags. Values without whitespace, values that are paths to existing files, and the unquoted form all work as before.
#!/usr/bin/env -S usage exec "deno run --allow-env=usage_*"
//USAGE arg "<name>" help="Name to greet"

Fixed
- (cli) In usage bash, zsh, fish and powershell, words after -- now reach the script as values (#1541, @jdx). Previously, usage bash script.sh positional -- --help printed the script's help with an Error: prefix and exited with status 1. -h and --help still show help when they come before --.
- (cli) In --help output, every line of a multi-line example is now indented (#1548, @jdx). Before, sample output lines after the first started at column 0.

💚 Sponsor usage
usage is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If usage powers CLI specs, docs, or completions for a tool you maintain or use, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep usage fast, free, and independent.

https://github.com/jdx/usage/releases/tag/v7.0.0

Most popular in Terminals & CLI tools

See all
  1. PowerShellPowerShell is a cross-platform task automation solution made up of a command-line shell, a scripting language, and a configuration management framework. PowerShell runs on Windows, Linux, and macOS.
  2. QPDFQPDF is a command-line tool and C++ library that performs content-preserving transformations on PDF files.
  3. Oh My PoshPrompt theme engine for any shell
  4. Microsoft Azure CLIThe Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.
  5. yqyq is a portable command-line YAML, JSON, XML, CSV and properties processor.
  6. AlacrittyAlacritty is a free and open-source GPU accelerated terminal emulator focused on performance and simplicity.
  7. fzfA general-purpose command-line fuzzy finder
  8. PuTTYA free implementation of SSH and Telnet for Windows and Unix platforms, along with an xterm terminal emulator.
  9. cURLCommand line tool and library for transferring data with URLs
  10. TabbyA terminal for a more modern age.

More from jdx

See all

Tags

Share