https://github.com/idanarye/retrospective-crate-version-tagging
Fill in GitHub release history from existing changlog entries and crates.io versions
https://github.com/idanarye/retrospective-crate-version-tagging
cli-app release-management rust
Last synced: 13 days ago
JSON representation
Fill in GitHub release history from existing changlog entries and crates.io versions
- Host: GitHub
- URL: https://github.com/idanarye/retrospective-crate-version-tagging
- Owner: idanarye
- License: apache-2.0
- Created: 2024-10-14T21:16:15.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-10-17T22:57:48.000Z (6 months ago)
- Last Synced: 2025-03-28T05:04:29.516Z (about 1 month ago)
- Topics: cli-app, release-management, rust
- Language: Rust
- Homepage:
- Size: 96.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Retrospective Crate Version Tagging
Workflows like like [release-please](https://github.com/googleapis/release-please) can manage the entire release cycle for you, but they only work if you manage everything from there. If you have a more conmplex release scheme (e.g. - multiple released crates in one repository) or if you didn't use release-please from the beginning and want to generate the release history, these workflows can't help you. You need something a bit more manual.
`retrospective-crate-version-tagging` is a CLI tool for generating GitHub releases for Rust projects based on the already existing release information:
* A changelog file in the [Keep a Changelog](https://keepachangelog.com).
* The versions uploaded to [crates.io](https://crates.io/).`retrospective-crate-version-tagging` takes the release notes from the changelog and the commit hash from crates.io, and combines them to create GitHub releases.
## Requirements
* [The GitHub CLI](https://github.com/cli/cli) (`gh`) must be installed and in the `PATH`.
* The authentication token used by the GitHub CLI must have the `workflow` scope.
* To verify it has that scope, run `gh auth status` and look for `'workflow'` in the `Token scopes` list.
* If it's not there, run `gh auth refresh --scopes workflow` and follow the instructions.## Installing
Install from crates.io using:
```bash
$ cargo install retrospective-crate-version-tagging
```## Usage
`retrospective-crate-version-tagging` has two commands:
* `retrospective-crate-version-tagging detect` - read the changelog and query crates.io to generate a YAML with information required to create the releases.
* `retrospective-crate-version-tagging create-releases` - receive (via STDIN) the YAML created by the first command and use `gh` to create GitHub releases from it.The output of the first command can be redirected directly into the second command, or it can be stored in a file that can manually be inspected and edited before creating the versions.
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.