Skip to main content

CLI Reference

Complete command-line interface reference

Release Rust projects with ease

Global Flags

FlagShortDescription
--config-fPath to config file (overrides auto-detection)
--verboseEnable verbose output
--debugEnable debug output
--quiet-qSuppress non-error output
--strictStrict mode: configured features that silently skip become hard errors

Commands

anodizer release

Run the full release pipeline

FlagShortDefaultDescription
--crateRelease a specific crate (repeatable; --id is accepted as a GoReleaser-compat alias)
--allRelease all crates with unreleased changes
--forceForce release even without unreleased changes
--snapshotBuild without publishing (snapshot mode)
--nightlyCreate a nightly release with date-based version
--dry-runRun full pipeline without side effects
--cleanRemove dist directory before starting
--skipSkip stages (comma-separated, e.g. docker,announce)
--tokenGitHub token (overrides ANODIZER_GITHUB_TOKEN / GITHUB_TOKEN env vars)
--timeout60mPipeline timeout duration (e.g., 60m, 1h, 5s)
--parallelism-pMaximum number of parallel build jobs (default: number of CPUs)
--auto-snapshotAutomatically set --snapshot if the git repo is dirty
--single-targetBuild only for the host target triple
--targetsRestrict the build to a comma-separated subset of configured target triples (e.g. x86_64-apple-darwin,aarch64-apple-darwin). Used by the Determinism Harness's sharded job matrix; conflicts with --single-target.
--release-notesPath to a custom release notes file (overrides changelog)
--workspaceRelease a specific workspace in a monorepo config
--preflightRun pre-flight publisher-state check and exit (don't start the pipeline)
--no-preflightSkip the automatic pre-flight publisher-state check
--strict-preflightAlias for --strict (also treats Unknown publisher state as a blocker during pre-flight)
--draftSet the release as a draft
--release-headerPath to a file containing custom release header text
--release-header-tmplPath to a template file for release header (rendered with template variables)
--release-footerPath to a file containing custom release footer text
--release-footer-tmplPath to a template file for release footer (rendered with template variables)
--release-notes-tmplPath to a template file for release notes (rendered with template variables, overrides --release-notes)
--fail-fastAbort immediately on first error during publishing
--no-gate-submitterDisable the Submitter gate: dispatch Submitter publishers even when required Assets/Manager publishers failed
--rollbackRollback policy after publish stage. Defaults to best-effort when preflight is clean, none otherwise.
--rollback-onlySkip publish; re-attempt rollback from a prior run report. Requires --from-run=.
--from-runPrior run id whose state to load when running --rollback-only. Loads /run-/rollback.json if present (a prior replay's state), otherwise /run-/report.json. Delete rollback.json to force a full re-roll. Must match the run_id format written by the release pipeline (alphanumeric, dot, dash, underscore; no path separators).
--allow-rerunDANGEROUS: force publish to proceed even when a prior dist/run-/report.json exists for this tag. PR-based publishers (homebrew, scoop, nix, krew, MCP) will open DUPLICATE pull requests. Recover from partial failures with --rollback-only --from-run= first. Cannot be combined with --rollback-only (which has its own idempotency).
--allow-nondeterministicRuntime non-determinism opt-out for a specific artifact (repeatable). Mutually exclusive with --strict.
--summary-jsonWrite the per-publisher run summary JSON to this path.
--splitRun only the build stage for split CI fan-out (outputs artifacts JSON to dist/)
--mergeMerge artifacts from split build jobs and resume the pipeline from post-build stages
--prepareRun local build + archive + sign + checksum + sbom stages but skip release / publish / announce (GoReleaser Pro parity). Artifacts stay in dist/ for inspection.
--resume-releaseResume into an existing release left over from a prior failed attempt; bypasses the safety check that bails on partial assets.
--replace-existingForce release.replace_existing_artifacts: true regardless of config (overwrite conflicting assets on retry).
--no-post-publish-pollSkip post-publish polling for chocolatey moderation / winget PR validation; report NotPolled for affected publishers.

anodizer build

Build binaries only (always runs in snapshot mode)

FlagShortDefaultDescription
--crateBuild a specific crate (repeatable)
--timeout60mPipeline timeout duration (e.g., 60m, 1h, 5s)
--parallelism-pMaximum number of parallel build jobs (default: number of CPUs)
--single-targetBuild only for the host target triple
--workspaceBuild a specific workspace in a monorepo config
--output-oCopy the built binary to this path (requires --single-target and single crate)
--skipSkip stages (comma-separated: pre-hooks, post-hooks, validate, before)

anodizer check

Validate configuration and run determinism checks

anodizer check config

Validate the workspace's anodize config

FlagShortDefaultDescription
--workspaceValidate a specific workspace in a monorepo config

anodizer check determinism

Run the determinism harness (build pipeline twice, diff artifacts)

FlagShortDefaultDescription
--runs2Number of from-clean rebuilds to diff
--stagesOptional stage subset (build,archive,sbom,sign,checksum)
--targetsRestrict the harness to a comma-separated subset of configured target triples. Used by the sharded release workflow so each runner only validates targets it can natively build (Linux runner skips macOS targets, etc.). Forwarded to the child anodize release --snapshot subprocess.
--reportJSON report path; default dist/run-/determinism.json
--snapshotSeed SDE from snapshot rules instead of HEAD commit

anodizer init

Generate starter config

anodizer changelog

Generate changelog only

FlagShortDefaultDescription
--crateGenerate changelog for a specific crate

anodizer completion

Generate shell completions

FlagShortDefaultDescription
<shell>Shell to generate completions for

anodizer healthcheck

Check availability of required external tools

anodizer man

Generate man pages to stdout

anodizer jsonschema

Output JSON Schema for .anodizer.yaml

anodizer resolve-tag

Resolve a git tag to its matching crate in the config

FlagShortDefaultDescription
<tag>Tag to resolve (e.g. 'v1.2.3', 'core-v0.2.3')
--jsonOutput as JSON

anodizer targets

Emit the configured build targets as a GitHub Actions matrix

FlagShortDefaultDescription
--jsonOutput as JSON (include-form matrix)
--crateRestrict to specific crate(s)

anodizer tag

Auto-tag based on commit message directives

FlagShortDefaultDescription
--dry-runShow what tag would be created without pushing
--custom-tagOverride bump logic with a specific tag value
--default-bumpOverride default bump type (patch/minor/major)
--crateTag a specific crate in a workspace

anodizer continue

Resume a release after a transient failure or after --prepare/--split

FlagShortDefaultDescription
--mergeMerge artifacts from split build jobs and run post-build stages
--distCustom dist directory (overrides config)
--dry-runRun full pipeline without side effects
--skipSkip stages (comma-separated, e.g. docker,announce)
--tokenGitHub token (overrides ANODIZER_GITHUB_TOKEN / GITHUB_TOKEN env vars)

anodizer publish

Run only the publish stages (release, publish, blob) from a completed dist/

FlagShortDefaultDescription
--dry-runRun full pipeline without side effects
--tokenGitHub token (overrides ANODIZER_GITHUB_TOKEN / GITHUB_TOKEN env vars)
--distCustom dist directory (overrides config)

anodizer bump

Bump crate versions (Conventional Commits → semver level)

FlagShortDefaultDescription
<level_or_version>patch
--package-pBump a specific crate (repeatable)
--workspaceBump every workspace member (excluding publish=false)
--excludeExclude a crate from --workspace (repeatable)
--preAppend a prerelease identifier (e.g. rc.1)
--exactDo not rewrite dependents' [dependencies] version specs
--allow-dirtyProceed even if the working tree has uncommitted changes
--yes-ySkip confirmation prompt
--dry-runPrint the plan without editing any files
--commitStage edits and create a single commit
--signGPG-sign the commit (requires --commit)
--commit-messageOverride the default commit message template
--outputtextOutput format: text

anodizer announce

Run only the announce stage from a completed dist/

FlagShortDefaultDescription
--dry-runRun full pipeline without side effects
--distCustom dist directory (overrides config)
--tokenGitHub token (overrides ANODIZER_GITHUB_TOKEN / GITHUB_TOKEN env vars)
--skipSkip stages (comma-separated)