Skip fixup commits in changelog
This change Makes the changelog generator ignore fixup commits. `git commit --fixup` can be used to mark that a commit should be squashed before merging, which can be done automatically with `git rebase --autosquash`. Fixup commits have a summary that starts with `fixup!` type: development
This commit is contained in:
parent
a395052f7c
commit
03a9935164
10
.github/workflows/build.yaml
vendored
10
.github/workflows/build.yaml
vendored
|
@ -90,20 +90,20 @@ jobs:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
components: rustfmt
|
components: rustfmt
|
||||||
|
|
||||||
- name: Format
|
- name: Check Formatting
|
||||||
run: cargo +nightly fmt --all -- --check
|
run: cargo +nightly fmt --all -- --check
|
||||||
|
|
||||||
- name: Completion Scripts
|
- name: Check Completion Scripts
|
||||||
if: matrix.os != 'windows-latest'
|
if: matrix.os != 'windows-latest'
|
||||||
run: |
|
run: |
|
||||||
./bin/generate-completions
|
./bin/generate-completions
|
||||||
git diff --no-ext-diff --quiet --exit-code
|
git diff --no-ext-diff --exit-code
|
||||||
|
|
||||||
- name: Readme
|
- name: Check Readme Table of Contents
|
||||||
if: matrix.os != 'windows-latest'
|
if: matrix.os != 'windows-latest'
|
||||||
run: |
|
run: |
|
||||||
cargo run --package update-readme toc
|
cargo run --package update-readme toc
|
||||||
git diff --no-ext-diff --quiet --exit-code
|
git diff --no-ext-diff --exit-code
|
||||||
|
|
||||||
- name: Install `mdbook`
|
- name: Install `mdbook`
|
||||||
uses: peaceiris/actions-mdbook@v1
|
uses: peaceiris/actions-mdbook@v1
|
||||||
|
|
|
@ -4,7 +4,10 @@ Changelog
|
||||||
|
|
||||||
UNRELEASED - 2020-04-08
|
UNRELEASED - 2020-04-08
|
||||||
-----------------------
|
-----------------------
|
||||||
- :zap: [`xxxxxxxxxxxx`](https://github.com/casey/intermodal/commits/master) Make changelog generator strict ([#341](https://github.com/casey/intermodal/pull/341)) - _Casey Rodarmor <casey@rodarmor.com>_
|
- :wrench: [`xxxxxxxxxxxx`](https://github.com/casey/intermodal/commits/master) Skip fixup commits in changelog - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
|
- :art: [`a395052f7c22`](https://github.com/casey/intermodal/commit/a395052f7c226a934cf1b0d75294b1a3146cbeae) Deduplicate progress style string - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
|
- :wrench: [`db2a2ac4f556`](https://github.com/casey/intermodal/commit/db2a2ac4f556e7a1a450f9a18d212f082d18fb9d) Refactor demo recipe in justfile into multiple recipes - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
|
- :zap: [`92748f9fd4e6`](https://github.com/casey/intermodal/commit/92748f9fd4e6e65c25e82f2a6e41a0b9b82cf4dd) Make changelog generator strict ([#341](https://github.com/casey/intermodal/pull/341)) - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
- :wrench: [`c33446b48135`](https://github.com/casey/intermodal/commit/c33446b481351009fc16335cbcd66ff2c2b7985e) Generate changelog from git history ([#337](https://github.com/casey/intermodal/pull/337)) - Fixes [#336](https://github.com/casey/intermodal/issues/336) - _Casey Rodarmor <casey@rodarmor.com>_
|
- :wrench: [`c33446b48135`](https://github.com/casey/intermodal/commit/c33446b481351009fc16335cbcd66ff2c2b7985e) Generate changelog from git history ([#337](https://github.com/casey/intermodal/pull/337)) - Fixes [#336](https://github.com/casey/intermodal/issues/336) - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
- :art: [`6edab1fa3fa8`](https://github.com/casey/intermodal/commit/6edab1fa3fa8461ac4ca02466a04b0f14e42dfc0) Use `TestEnv::assert_ok` everywhere - Fixes [#330](https://github.com/casey/intermodal/issues/330) - _Casey Rodarmor <casey@rodarmor.com>_
|
- :art: [`6edab1fa3fa8`](https://github.com/casey/intermodal/commit/6edab1fa3fa8461ac4ca02466a04b0f14e42dfc0) Use `TestEnv::assert_ok` everywhere - Fixes [#330](https://github.com/casey/intermodal/issues/330) - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
- :zap: [`8e3f5516aff8`](https://github.com/casey/intermodal/commit/8e3f5516aff8c89289203a2bc1b46505410c5f1f) Use attractive paths in user-facing messages - Fixes [#252](https://github.com/casey/intermodal/issues/252), [#332](https://github.com/casey/intermodal/issues/332) - _Casey Rodarmor <casey@rodarmor.com>_
|
- :zap: [`8e3f5516aff8`](https://github.com/casey/intermodal/commit/8e3f5516aff8c89289203a2bc1b46505410c5f1f) Use attractive paths in user-facing messages - Fixes [#252](https://github.com/casey/intermodal/issues/252), [#332](https://github.com/casey/intermodal/issues/332) - _Casey Rodarmor <casey@rodarmor.com>_
|
||||||
|
|
28
Cargo.lock
generated
28
Cargo.lock
generated
|
@ -369,9 +369,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.1.8"
|
version = "0.1.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8"
|
checksum = "725cf19794cf90aa94e65050cb4191ff5d8fa87a498383774c47b332e3af952e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
@ -604,9 +604,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "openssl-sys"
|
name = "openssl-sys"
|
||||||
version = "0.9.54"
|
version = "0.9.55"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986"
|
checksum = "7717097d810a0f2e2323f9e5d11e71608355e24828410b55b9d4f18aa5f9a5d8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
"cc",
|
"cc",
|
||||||
|
@ -692,9 +692,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.9"
|
version = "1.0.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435"
|
checksum = "df246d292ff63439fea9bc8c0a270bed0e390d5ebd4db4ba15aba81111b5abe3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-xid",
|
"unicode-xid",
|
||||||
]
|
]
|
||||||
|
@ -899,9 +899,9 @@ checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "snafu"
|
name = "snafu"
|
||||||
version = "0.6.3"
|
version = "0.6.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "48492e4f51c6e679217e80c11290edfdedf3133e358f4f432a6296f4c820f95b"
|
checksum = "b1ec0ae2ed980f26e1ad62e717feb01df90731df56887b5391a2c79f9f6805be"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"doc-comment",
|
"doc-comment",
|
||||||
"snafu-derive",
|
"snafu-derive",
|
||||||
|
@ -909,9 +909,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "snafu-derive"
|
name = "snafu-derive"
|
||||||
version = "0.6.3"
|
version = "0.6.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5d1c41856cbfa99befda5034c72539dd9d7dd6f3e61058bdb804ac40715bc2a"
|
checksum = "0ec32ba84a7a86aeb0bc32fd0c46d31b0285599f68ea72e87eff6127889d99e1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -1051,9 +1051,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "termios"
|
name = "termios"
|
||||||
version = "0.3.1"
|
version = "0.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625"
|
checksum = "6f0fcee7b24a25675de40d5bb4de6e41b0df07bc9856295e7e2b3a3600c400c2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
@ -1219,9 +1219,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-util"
|
name = "winapi-util"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80"
|
checksum = "fa515c5163a99cc82bab70fd3bfdd36d827be85de63737b40fcef2ce084a436e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
]
|
]
|
||||||
|
|
|
@ -14,6 +14,13 @@ impl Changelog {
|
||||||
let mut head = true;
|
let mut head = true;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
let summary_bytes = current
|
||||||
|
.summary_bytes()
|
||||||
|
.ok_or_else(|| anyhow!("Commit had no summary"))?;
|
||||||
|
|
||||||
|
let summary = String::from_utf8_lossy(summary_bytes);
|
||||||
|
|
||||||
|
if !summary.starts_with("fixup!") {
|
||||||
let manifest_bytes = current
|
let manifest_bytes = current
|
||||||
.tree()?
|
.tree()?
|
||||||
.get_path("Cargo.toml".as_ref())?
|
.get_path("Cargo.toml".as_ref())?
|
||||||
|
@ -27,14 +34,15 @@ impl Changelog {
|
||||||
|
|
||||||
let entry = Entry::new(¤t, manifest.package.unwrap().version.as_ref(), head)?;
|
let entry = Entry::new(¤t, manifest.package.unwrap().version.as_ref(), head)?;
|
||||||
|
|
||||||
head = false;
|
|
||||||
|
|
||||||
entries.push(entry);
|
entries.push(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
head = false;
|
||||||
|
|
||||||
match current.parent_count() {
|
match current.parent_count() {
|
||||||
0 => break,
|
0 => break,
|
||||||
1 => current = current.parent(0)?,
|
1 => current = current.parent(0)?,
|
||||||
count => panic!("Commit has {} parents", count),
|
_ => throw!(anyhow!("Commit had multiple parents!")),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,12 @@ pub(crate) use std::{
|
||||||
pub(crate) use anyhow::{anyhow, Error};
|
pub(crate) use anyhow::{anyhow, Error};
|
||||||
pub(crate) use cargo_toml::Manifest;
|
pub(crate) use cargo_toml::Manifest;
|
||||||
pub(crate) use chrono::{DateTime, NaiveDateTime, Utc};
|
pub(crate) use chrono::{DateTime, NaiveDateTime, Utc};
|
||||||
pub(crate) use fehler::throws;
|
pub(crate) use fehler::{throw, throws};
|
||||||
pub(crate) use git2::{Commit, Repository};
|
pub(crate) use git2::{Commit, Repository};
|
||||||
pub(crate) use serde::{Deserialize, Serialize};
|
pub(crate) use serde::{Deserialize, Serialize};
|
||||||
pub(crate) use structopt::StructOpt;
|
pub(crate) use structopt::StructOpt;
|
||||||
pub(crate) use strum_macros::IntoStaticStr;
|
pub(crate) use strum::VariantNames;
|
||||||
|
pub(crate) use strum_macros::{EnumVariantNames, IntoStaticStr};
|
||||||
pub(crate) use url::Url;
|
pub(crate) use url::Url;
|
||||||
|
|
||||||
pub(crate) use crate::{
|
pub(crate) use crate::{
|
||||||
|
|
|
@ -58,7 +58,7 @@ impl Display for Entry {
|
||||||
write!(
|
write!(
|
||||||
f,
|
f,
|
||||||
"{} [`{}`]({}) {}",
|
"{} [`{}`]({}) {}",
|
||||||
self.metadata.emoji(),
|
self.metadata.kind.emoji(),
|
||||||
shorthash,
|
shorthash,
|
||||||
url,
|
url,
|
||||||
self.summary
|
self.summary
|
||||||
|
|
|
@ -1,13 +1,25 @@
|
||||||
use crate::common::*;
|
use crate::common::*;
|
||||||
|
|
||||||
#[derive(
|
#[derive(
|
||||||
Deserialize, Serialize, Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, IntoStaticStr,
|
Deserialize,
|
||||||
|
Serialize,
|
||||||
|
Debug,
|
||||||
|
Clone,
|
||||||
|
Copy,
|
||||||
|
Eq,
|
||||||
|
PartialEq,
|
||||||
|
Ord,
|
||||||
|
PartialOrd,
|
||||||
|
IntoStaticStr,
|
||||||
|
EnumVariantNames,
|
||||||
)]
|
)]
|
||||||
#[serde(rename_all = "kebab-case")]
|
#[serde(rename_all = "kebab-case")]
|
||||||
|
#[strum(serialize_all = "kebab-case")]
|
||||||
pub(crate) enum Kind {
|
pub(crate) enum Kind {
|
||||||
Added,
|
Added,
|
||||||
Breaking,
|
Breaking,
|
||||||
Changed,
|
Changed,
|
||||||
|
Dependencies,
|
||||||
Development,
|
Development,
|
||||||
Distribution,
|
Distribution,
|
||||||
Documentation,
|
Documentation,
|
||||||
|
@ -16,3 +28,21 @@ pub(crate) enum Kind {
|
||||||
Release,
|
Release,
|
||||||
Testing,
|
Testing,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Kind {
|
||||||
|
pub(crate) fn emoji(self) -> &'static str {
|
||||||
|
match self {
|
||||||
|
Self::Added => ":sparkles:",
|
||||||
|
Self::Breaking => ":boom:",
|
||||||
|
Self::Changed => ":zap:",
|
||||||
|
Self::Dependencies => ":arrow_up:",
|
||||||
|
Self::Development => ":wrench:",
|
||||||
|
Self::Distribution => ":package:",
|
||||||
|
Self::Documentation => ":books:",
|
||||||
|
Self::Fixed => ":bug:",
|
||||||
|
Self::Reform => ":art:",
|
||||||
|
Self::Release => ":bookmark:",
|
||||||
|
Self::Testing => ":white_check_mark:",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -27,21 +27,6 @@ impl Metadata {
|
||||||
|
|
||||||
metadata
|
metadata
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn emoji(&self) -> &'static str {
|
|
||||||
match self.kind {
|
|
||||||
Kind::Added => ":sparkles:",
|
|
||||||
Kind::Breaking => ":boom:",
|
|
||||||
Kind::Changed => ":zap:",
|
|
||||||
Kind::Development => ":wrench:",
|
|
||||||
Kind::Distribution => ":package:",
|
|
||||||
Kind::Documentation => ":books:",
|
|
||||||
Kind::Fixed => ":bug:",
|
|
||||||
Kind::Reform => ":art:",
|
|
||||||
Kind::Release => ":bookmark:",
|
|
||||||
Kind::Testing => ":white_check_mark:",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Metadata {
|
impl Default for Metadata {
|
||||||
|
|
|
@ -3,6 +3,7 @@ use crate::common::*;
|
||||||
#[derive(StructOpt)]
|
#[derive(StructOpt)]
|
||||||
pub(crate) enum Opt {
|
pub(crate) enum Opt {
|
||||||
IssueTemplate,
|
IssueTemplate,
|
||||||
|
Types,
|
||||||
Update,
|
Update,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +11,11 @@ impl Opt {
|
||||||
#[throws]
|
#[throws]
|
||||||
pub(crate) fn run(self) {
|
pub(crate) fn run(self) {
|
||||||
match self {
|
match self {
|
||||||
|
Self::Types => {
|
||||||
|
for kind in Kind::VARIANTS {
|
||||||
|
println!("{}", kind)
|
||||||
|
}
|
||||||
|
}
|
||||||
Self::IssueTemplate => {
|
Self::IssueTemplate => {
|
||||||
println!("{}", Metadata::default().to_string());
|
println!("{}", Metadata::default().to_string());
|
||||||
}
|
}
|
||||||
|
|
10
justfile
10
justfile
|
@ -86,7 +86,7 @@ check-man: man
|
||||||
check-minimal-versions:
|
check-minimal-versions:
|
||||||
./bin/check-minimal-versions
|
./bin/check-minimal-versions
|
||||||
|
|
||||||
check: test clippy lint check-minimal-versions changelog
|
check: test clippy lint check-minimal-versions changelog-update
|
||||||
git diff --no-ext-diff --quiet --exit-code
|
git diff --no-ext-diff --quiet --exit-code
|
||||||
cargo +nightly fmt --all -- --check
|
cargo +nightly fmt --all -- --check
|
||||||
cargo run --package update-readme toc
|
cargo run --package update-readme toc
|
||||||
|
@ -116,9 +116,15 @@ publish: publish-check
|
||||||
git push github {{version}}
|
git push github {{version}}
|
||||||
cargo publish
|
cargo publish
|
||||||
|
|
||||||
changelog:
|
changelog-update:
|
||||||
cargo run --package changelog update
|
cargo run --package changelog update
|
||||||
|
|
||||||
|
changelog-types:
|
||||||
|
cargo run --package changelog types
|
||||||
|
|
||||||
|
changelog-issue-template:
|
||||||
|
cargo run --package changelog issue-template
|
||||||
|
|
||||||
# record, upload, and render demo animation
|
# record, upload, and render demo animation
|
||||||
demo: demo-record demo-upload demo-render
|
demo: demo-record demo-upload demo-render
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user