From 8462d82d3472a3df68b6ea108b63c485677863f1 Mon Sep 17 00:00:00 2001 From: Albrecht Date: Thu, 17 Oct 2024 15:25:42 +0200 Subject: [PATCH 1/3] feat: add changelog modifier callback to run function --- git-cliff/src/lib.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/git-cliff/src/lib.rs b/git-cliff/src/lib.rs index 95d37b738e..74d76f10ac 100644 --- a/git-cliff/src/lib.rs +++ b/git-cliff/src/lib.rs @@ -347,7 +347,14 @@ fn process_repository<'a>( } /// Runs `git-cliff`. -pub fn run(mut args: Opt) -> Result<()> { +pub fn run(args: Opt) -> Result<()> { + run_with_changelog_modifier(args, |_| Ok(())) +} + +pub fn run_with_changelog_modifier( + mut args: Opt, + changelog_modifier: impl FnOnce(&mut Changelog) -> Result<()>, +) -> Result<()> { // Check if there is a new version available. #[cfg(feature = "update-informer")] check_new_version(); @@ -590,6 +597,7 @@ pub fn run(mut args: Opt) -> Result<()> { } Changelog::new(releases, &config)? }; + changelog_modifier(&mut changelog)?; // Print the result. let mut out: Box = if let Some(path) = &output { From 5f17263d149156de190a5953e33b10927a7b322c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Orhun=20Parmaks=C4=B1z?= Date: Thu, 23 Jan 2025 23:15:40 +0300 Subject: [PATCH 2/3] docs(lib): add docs for run methods --- .github/workflows/ci.yml | 16 ++++++++++++++++ git-cliff/examples/run.rs | 9 +++++++++ git-cliff/src/lib.rs | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 git-cliff/examples/run.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd55987c1b..99ca477298 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -134,6 +134,22 @@ jobs: command: fmt args: --all -- --check --verbose + doctest: + name: Doctests + runs-on: ubuntu-22.04 + steps: + - name: Install toolchain + uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt + - name: Checkout + uses: actions/checkout@v4 + - name: Check the formatting + uses: actions-rs/cargo@v1 + with: + command: test + args: --doc + lychee: name: Links runs-on: ubuntu-22.04 diff --git a/git-cliff/examples/run.rs b/git-cliff/examples/run.rs new file mode 100644 index 0000000000..f82571ca18 --- /dev/null +++ b/git-cliff/examples/run.rs @@ -0,0 +1,9 @@ +use clap::Parser; +use git_cliff::args::Opt; +use git_cliff_core::error::Result; + +fn main() -> Result<()> { + let args = Opt::parse(); + git_cliff::run(args)?; + Ok(()) +} diff --git a/git-cliff/src/lib.rs b/git-cliff/src/lib.rs index 74d76f10ac..870c5f9e0e 100644 --- a/git-cliff/src/lib.rs +++ b/git-cliff/src/lib.rs @@ -347,10 +347,47 @@ fn process_repository<'a>( } /// Runs `git-cliff`. +/// +/// # Example +/// +/// ```no_run +/// use clap::Parser; +/// use git_cliff::args::Opt; +/// use git_cliff_core::error::Result; +/// +/// fn main() -> Result<()> { +/// let args = Opt::parse(); +/// git_cliff::run(args)?; +/// Ok(()) +/// } +/// ``` pub fn run(args: Opt) -> Result<()> { run_with_changelog_modifier(args, |_| Ok(())) } +/// Runs `git-cliff` with a changelog modifier. +/// +/// This is useful if you want to modify the [`Changelog`] before +/// it's written or the context is printed (depending how git-cliff is started). +/// +/// # Example +/// +/// ```no_run +/// use clap::Parser; +/// use git_cliff::args::Opt; +/// use git_cliff_core::error::Result; +/// +/// fn main() -> Result<()> { +/// let args = Opt::parse(); +/// +/// git_cliff::run_with_changelog_modifier(args, |changelog| { +/// println!("Releases: {:?}", changelog.releases); +/// Ok(()) +/// })?; +/// +/// Ok(()) +/// } +/// ``` pub fn run_with_changelog_modifier( mut args: Opt, changelog_modifier: impl FnOnce(&mut Changelog) -> Result<()>, From 030de7ba182f74736364a884a1606ce00c8056e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Orhun=20Parmaks=C4=B1z?= Date: Thu, 23 Jan 2025 23:21:55 +0300 Subject: [PATCH 3/3] chore(lint): allow tabs in doc comments --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38a447cac3..f2df7d9a9e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,6 +97,7 @@ jobs: --tests --verbose -- -D warnings -A clippy::literal_string_with_formatting_args + -A clippy::tabs_in_doc_comments - name: Check the pedantic lints uses: actions-rs/cargo@v1 with: