Iteration 8: release readiness for v0.1.0#11
Merged
Conversation
Add release infrastructure: GitHub Actions release workflow (6 targets), deb/rpm packaging, Homebrew tap automation, man page generation (xtask), shell completions bundling, LICENSE, CHANGELOG, and README overhaul. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Homebrew formula heredoc: auto-detect indentation instead of hardcoded sed - rpm/deb rename: use glob instead of hardcoded filenames - sha256sum: narrow glob to .tar.gz/.zip/.deb/.rpm - xtask: &PathBuf → &Path parameter type - xtask: remove misleading man-pages pseudo-subcommand from invocations - Remove unused archive matrix variable Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR prepares hoppy v0.1.0 for an initial public release by adding release engineering automation (CI + release pipeline), packaging metadata, and end-user documentation needed to ship binaries and OS packages.
Changes:
- Added an
xtaskworkspace crate to generate clap-based man pages and exposedhoppy::clivia a newsrc/lib.rs. - Introduced GitHub Actions workflows for CI (multi-target, incl. aarch64-linux via cross) and a tag-driven release pipeline producing archives, checksums,
.deb/.rpm, and Homebrew tap updates. - Added/updated release “foundation” files and metadata: LICENSE, CHANGELOG, README, and Cargo.toml packaging metadata.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
xtask/src/main.rs |
New xtask for recursive manpage generation from clap command tree. |
xtask/Cargo.toml |
Declares xtask crate deps (clap_mangen, hoppy, anyhow). |
src/lib.rs |
Exposes cli module for reuse by xtask and tooling. |
LICENSE |
Adds MIT license text plus AI-generated notice (currently with a placeholder). |
README.md |
Expanded installation/usage docs, env vars, completions, badges. |
CHANGELOG.md |
Adds v0.1.0 changelog entry. |
Cargo.toml |
Adds repository metadata and deb/rpm packaging config; adds xtask to workspace. |
.cargo/config.toml |
Adds cargo xtask alias. |
.github/workflows/ci.yml |
Enables CI on push/PR and adds aarch64-linux via cross. |
.github/workflows/release.yml |
Adds tag-triggered release pipeline (archives, checksums, deb/rpm, Homebrew). |
hoppy-knowledgebase/*.md |
Adds release notes/research/checklist and updates roadmap. |
You can also share your feedback on Copilot code review. Take the survey.
Comment on lines
+60
to
+63
| // `Command::name` requires `&'static str`, so we leak the String to satisfy | ||
| // the lifetime. This is acceptable in a short-lived xtask binary. | ||
| let static_name: &'static str = Box::leak(name.into_boxed_str()); | ||
| let page_cmd = cmd.clone().name(static_name); |
Comment on lines
+67
to
+71
| Also available via [winget](https://github.com/microsoft/winget-pkgs): | ||
|
|
||
| ```powershell | ||
| winget install ractive.hoppy | ||
| ``` |
| run: cargo deb --no-build --no-strip | ||
| # cargo-deb picks up the binary from target/release/ and assets from | ||
| # the paths listed in [package.metadata.deb] | ||
|
|
| components: clippy | ||
| - uses: Swatinem/rust-cache@v2 | ||
| - run: cargo clippy -- -D warnings | ||
| - run: cargo clippy --all-targets --all-features -- -D warnings |
Comment on lines
+19
to
+30
| /// Parses `--output-dir <path>` from argv, defaulting to `target/man`. | ||
| fn parse_output_dir() -> PathBuf { | ||
| let mut args = std::env::args().skip(1); | ||
| while let Some(arg) = args.next() { | ||
| if arg == "--output-dir" { | ||
| if let Some(val) = args.next() { | ||
| return PathBuf::from(val); | ||
| } | ||
| } else if let Some(val) = arg.strip_prefix("--output-dir=") { | ||
| return PathBuf::from(val); | ||
| } | ||
| } |
|
|
||
| MIT License | ||
|
|
||
| Copyright (c) 2026 [YOUR NAME OR ORGANIZATION] |
Comment on lines
47
to
52
| - name: Build | ||
| run: cargo build --target ${{ matrix.target }} | ||
| run: ${{ matrix.cross && 'cross' || 'cargo' }} build --target ${{ matrix.target }} | ||
|
|
||
| - name: Run tests | ||
| run: cargo test --target ${{ matrix.target }} | ||
| run: ${{ matrix.cross && 'cross' || 'cargo' }} test --target ${{ matrix.target }} | ||
|
|
| - name: Build release binary | ||
| run: ${{ matrix.cross && 'cross' || 'cargo' }} build --release --target ${{ matrix.target }} | ||
|
|
||
| # Generate shell completions by running a native host build. |
| - name: Package (Unix) | ||
| if: runner.os != 'Windows' | ||
| shell: bash | ||
| run: | |
- xtask: remove Box::leak, use Command::display_name() instead - xtask: validate args, reject unknown arguments - README: remove winget install (not yet available) - Pin cargo-deb@3, cargo-generate-rpm@0.20, cross@0.2.5 with --locked - CI: clippy and test now run with --workspace - LICENSE: replace placeholder with ractive - Fix 5 pre-existing clippy warnings in test crates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change from tag push to `on: release: types: [published]` so the workflow is triggered by creating a release on the GitHub UI. The release already exists when the workflow runs, so artifacts are uploaded to it rather than creating a new one. Also update roadmap checklist with actual done/not-done status. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.tar.gz/.ziparchives with binary + completions + man pages, generates SHA-256 checksums, creates GitHub Release onv*tag push.deband.rpmbuilt viacargo-debandcargo-generate-rpm, uploaded to releaseractive/homebrew-hoppytap after releasecargo xtask man-pagesusingclap_mangenrepository,homepage,keywords,categories)Test plan
cargo check --libpasses (newlib.rsexposingclimodule)cargo build --releasesucceedscargo test --workspacepassescargo xtask man-pagesgenerates 159 man pagesman target/man/hoppy.1)v0.1.0tag to trigger full pipeline🤖 Generated with Claude Code