Add new subcommands to `changelogger` for supporting file-per-change changelog (#3771)
## Motivation and Context Adds new subcommands `--new` and `--ls` to `changelogger` ## Description This is part 2 in a series of PRs supporting [file-per-change changelog](https://smithy-lang.github.io/smithy-rs/design/rfcs/rfc0042_file_per_change_changelog.html). This PR just adds utilities for humans and does NOT impact the current dev workflow, smithy-rs CI, or our release pipeline. #### A subcommand `--new` We can use this subcommand when creating a new changelog entry markdown file. An example usage: ``` $ changelogger new -t client -t aws-sdk-rust -r smithy-rs#1234 -a someone --bug-fix -m "Some changelog" \ # for long flags, replace -t with --applies-to, -r with --references, -a with --authors, and -m with --message \ # also remember to escape with \ when including backticks in the message at command line, e.g. \`pub\` The following changelog entry has been written to "/Users/ysaito1001/src/smithy-rs/.changelog/5745197.md": --- applies_to: - aws-sdk-rust - client authors: - someone references: - smithy-rs#1234 breaking: false new_feature: false bug_fix: true --- Some changelog ``` The following CLI arguments are "logically" required - `--applies-to` - `--ref` - `--author` - `--message` If any of the above is not passed a value at command line, then an editor is opened for further edit (which editor to open can be configured per the [edit crate](https://docs.rs/edit/0.1.5/edit/)). Note that the YAML syntax above is different from the single line array syntax [proposed in the RFC](https://smithy-lang.github.io/smithy-rs/design/rfcs/rfc0042_file_per_change_changelog.html#the-proposed-developer-experience). This is due to [a limitation](https://github.com/dtolnay/serde-yaml/issues/355) in `serde-yaml` (which has been archived unfortunately), but the multi-line values are still a valid YAML syntax and, most importantly, rendering changelong entries will continue working. For now, I won't post-process from the multi-line values syntax to the single line array syntax. One can work around this by handwriting a changelog entry Markdown file in `smithy-rs/.changelog` without using this subcommand. #### A subcommand `--ls` This subcommand will render a preview of changelog entries stored in `smithy-rs/.changelog` and print it to the standard output. Example usages (using the entry created at 5745197.md above): ``` $ changelogger ls -c smithy-rs \ # for long flag, replace -c with --change-set Next changelog preview for smithy-rs ===================================== **New this release:** -🐛 (client, [smithy-rs#1234](https://github.com/smithy-lang/smithy-rs/issues/1234), @someone) Some changelog **Contributors** Thank you for your contributions!❤️ - @someone ([smithy-rs#1234](https://github.com/smithy-lang/smithy-rs/issues/1234)) ``` ``` $ changelogger ls -c aws-sdk \ # for long flag, replace -c with --change-set Next changelog preview for aws-sdk-rust ======================================== **New this release:** -🐛 ([smithy-rs#1234](https://github.com/smithy-lang/smithy-rs/issues/1234), @someone) Some changelog **Contributors** Thank you for your contributions!❤️ - @someone ([smithy-rs#1234](https://github.com/smithy-lang/smithy-rs/issues/1234)) ``` ## Testing - Existing tests in CI - Basic unit tests for subcommands ---- _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._
Loading
Please register or sign in to comment