pub enum Commands {
Show 20 variants
Release {Show 49 fields
crate_names: Vec<String>,
all: bool,
force: bool,
snapshot: bool,
nightly: bool,
dry_run: bool,
clean: bool,
skip: Vec<String>,
publishers: Vec<String>,
token: Option<String>,
timeout: String,
parallelism: Option<usize>,
auto_snapshot: bool,
single_target: bool,
targets: Option<String>,
host_targets: bool,
release_notes: Option<PathBuf>,
workspace: Option<String>,
preflight: bool,
no_preflight: bool,
preflight_secrets: bool,
strict_preflight: bool,
draft: bool,
release_header: Option<PathBuf>,
release_header_tmpl: Option<PathBuf>,
release_footer: Option<PathBuf>,
release_footer_tmpl: Option<PathBuf>,
release_notes_tmpl: Option<PathBuf>,
fail_fast: bool,
no_gate_submitter: bool,
rollback: Option<String>,
simulate_failure: Vec<String>,
rollback_only: bool,
from_run: Option<String>,
allow_rerun: bool,
show_skipped: bool,
allow_nondeterministic: Vec<String>,
summary_json: Option<PathBuf>,
allow_ai_failure: bool,
allow_snapshot_publish: bool,
split: bool,
merge: bool,
publish_only: bool,
prepare: bool,
announce_only: bool,
resume_release: bool,
replace_existing: bool,
no_post_publish_poll: bool,
no_failure_policy: bool,
},
Build {
crate_names: Vec<String>,
timeout: String,
parallelism: Option<usize>,
single_target: bool,
workspace: Option<String>,
output: Option<PathBuf>,
skip: Vec<String>,
},
Check {
cmd: CheckCmd,
},
Init {
version_files: bool,
exclude: Vec<String>,
yes: bool,
},
Changelog {
range: Option<String>,
format: ChangelogFormat,
write: bool,
crate_name: Option<String>,
snapshot: bool,
},
Completion {
shell: Shell,
},
Healthcheck,
Preflight {
json: bool,
publish_only: bool,
skip: Vec<String>,
publishers: Vec<String>,
token: Option<String>,
},
Man,
Jsonschema,
ResolveTag {
tag: String,
json: bool,
},
Targets {
json: bool,
crate_names: Vec<String>,
},
Vocabulary {
json: bool,
},
Tools {
json: bool,
publish_only: bool,
skip: Vec<String>,
publishers: Vec<String>,
},
Tag {
dry_run: bool,
custom_tag: Option<String>,
version_override: Option<String>,
default_bump: Option<String>,
crate_name: Option<String>,
push: bool,
no_push: bool,
push_remote: Option<String>,
push_dry_run: bool,
changelog: bool,
sub: Option<TagSub>,
},
Continue {
merge: bool,
dist: Option<PathBuf>,
dry_run: bool,
skip: Vec<String>,
publishers: Vec<String>,
token: Option<String>,
},
Publish {
dry_run: bool,
token: Option<String>,
dist: Option<PathBuf>,
merge: bool,
allow_rerun: bool,
show_skipped: bool,
skip: Vec<String>,
publishers: Vec<String>,
},
Bump {Show 14 fields
level_or_version: Option<String>,
package: Vec<String>,
workspace: bool,
exclude: Vec<String>,
pre: Option<String>,
exact: bool,
allow_dirty: bool,
yes: bool,
dry_run: bool,
commit: bool,
changelog: bool,
sign: bool,
commit_message: Option<String>,
output: String,
},
Announce {
dry_run: bool,
dist: Option<PathBuf>,
token: Option<String>,
skip: Vec<String>,
merge: bool,
},
Notify {
message: String,
publishers: Vec<String>,
skip: Vec<String>,
raw: bool,
allow_secrets: bool,
dry_run: bool,
},
}Variants§
Release
Run the full release pipeline
Fields
Build
Build binaries only (always runs in snapshot mode)
Fields
Check
Validate configuration and run determinism checks
Init
Generate starter config, or enroll version-bearing files
Changelog
Manage CHANGELOG.md: refresh the pending section, or render notes/JSON
Fields
format: ChangelogFormatCompletion
Generate shell completions
Healthcheck
Check availability of required external tools
Preflight
Verify the environment can run the configured release: required
tools, env vars/secrets (presence only — values are never printed),
endpoint reachability, docker daemon, and loadable key material,
all derived from the resolved config. Every failure is reported in
one pass and the exit code is non-zero when anything is missing.
The same checks run automatically at the start of anodizer release.
Fields
Man
Generate man pages to stdout
Jsonschema
Output JSON Schema for .anodizer.yaml
ResolveTag
Resolve a git tag to its matching crate in the config
Targets
Emit the configured build targets as a GitHub Actions matrix.
Derives {os, target, artifact} entries from .anodizer.yaml.
Consumed by anodizer-action’s split-matrix output to feed a
strategy.matrix dynamically (via fromJson).
Vocabulary
Emit the canonical --skip / --publishers token vocabulary.
Lists every legal --skip / --publishers token, each tagged with
is_publisher / is_publish_stage, derived from anodizer’s publisher
registry (no hand-maintained list). Consumed by anodizer-action so it
emits only canonical tokens (e.g. homebrew, not homebrew-cask)
instead of re-deriving them in shell.
Tools
Emit the external CLI tools the resolved config’s pipeline will invoke.
Derives the tool set from the same per-stage / per-publisher
requirements the preflight engine checks, so it tracks the config
exactly. Consumed by anodizer-action to decide what to install on a
runner instead of grepping the config in shell.
Tag
Auto-tag based on commit message directives
Fields
version_override: Option<String>Tag exactly this semver version, bypassing autotag derivation and the Cargo.toml-ahead guard.
Accepts 1.2.3 or v1.2.3 (the v/configured prefix is normalized).
The version is applied to the tag AND synced into the relevant
Cargo.toml / version_files (single-crate, --crate, and lockstep
modes). In per-crate workspace mode it is rejected unless --crate <name> selects a single crate — one version across independently
versioned crates would corrupt their cadences. Intended for release
recovery where the operator must pin a precise version.
Continue
Resume a release after a transient failure or after --prepare/--split
With --merge: load every per-target context.json under dist/ (one
per split-build worker) and run the full post-build pipeline
(sign / checksum / sbom / release / publish / announce).
Without --merge: load existing dist/ artifacts and run the
publish-only pipeline (release / publish / blob). Use this to resume
a single-host release that stalled during publish (e.g. expired
token, transient 5xx) without rebuilding.
continue vs publish: both consume a populated dist/ and run
the release / publish / blob chain. continue is the recommended
alias for “resume a stalled single-host release” — the
continue command and the in-repo --prepare → continue
flow. publish is the lower-level entry point that does the same
thing without the resume framing; prefer continue unless you’re
invoking the publish chain on a dist that was never paused. Neither
is being deprecated.
Fields
Publish
Run only the publish stages (release, publish, blob) from a completed dist/
publish vs continue: both consume a populated dist/ and run
the same release / publish / blob chain. publish is the
lower-level entry point — no resume framing, no after-hooks /
milestone closure. continue is the recommended alias when
resuming a stalled single-host release (the
continue command); it additionally invokes the announce
stage and treats the dist as a paused-release surface. Prefer
continue unless you specifically want the unframed publish
chain. --dist overrides the configured dist directory;
release has no --dist because it produces dist.
Fields
Bump
Bump crate versions (Conventional Commits → semver level)
Infers the per-crate level from commits since each crate’s last tag
when no positional argument is given. patch|minor|major, an explicit
version, or release (strip prerelease) are also accepted.
Fields
Announce
Run only the announce stage from a completed dist/
Counterpart to release --announce-only: both re-fire announcers
against a populated dist without re-publishing. The subcommand
form (anodizer announce) accepts --dist to point at a
non-default tree (e.g. preserved by --preserve-dist); the flag
form (release --announce-only) operates on the dist configured
in .anodizer.yaml. Both honor nightly short-circuit.
Notify
Send a notification through configured announce integrations.
Fires configured announce integrations (slack, discord, webhook, …) with
a Tera-rendered message. Unlike announce, this command does not require
a dist/ directory — it is intended for ad-hoc notifications outside the
release pipeline (e.g. CI status alerts, deployment notices).
Fields
message: StringMessage template to send. Supports standard Tera template vars
(e.g. {{ ProjectName }}, {{ Tag }}, {{ Version }}).
publishers: Vec<String>Comma-separated list of integration names to fire (default: all). Valid names: discord, discourse, slack, webhook, telegram, teams, mattermost, reddit, twitter, mastodon, bluesky, linkedin.
raw: boolSend the message literally, without Tera template rendering. Use when the message contains untrusted text (e.g. error output in an on_error hook).
Trait Implementations§
Source§impl FromArgMatches for Commands
impl FromArgMatches for Commands
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut<'b>(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut<'b>( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§impl Subcommand for Commands
impl Subcommand for Commands
Source§fn augment_subcommands<'b>(__clap_app: Command) -> Command
fn augment_subcommands<'b>(__clap_app: Command) -> Command
Source§fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§fn has_subcommand(__clap_name: &str) -> bool
fn has_subcommand(__clap_name: &str) -> bool
Self can parse a specific subcommand