diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-04-29 10:13:02 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-29 10:13:02 +0000 |
commit | 65370eeb2c3bfd18b500ed04ce086689f5a0d700 (patch) | |
tree | 1ff9f51f351cb7e234327e8d1b84bfe81ca002db | |
parent | 7c250eece4d07a86443e40b8c97336fc9a6ba5eb (diff) | |
parent | b95c66efe4ef7603ca7d79b1e2003407932d676c (diff) |
Merge #221
221: Remove YAML from codebase r=matthiasbeyer a=TheNeikos
Closes #218
Co-authored-by: Marcel Müller <neikos@neikos.email>
-rw-r--r-- | .changelog.toml | 6 | ||||
-rw-r--r-- | .changelogs/0.1.0/2022-09-18T10_40_28_565776238.md | 8 | ||||
-rw-r--r-- | .changelogs/unreleased/2023-03-02T07_41_23_894605341.md | 8 | ||||
-rw-r--r-- | .changelogs/unreleased/2023-03-02T07_43_21_335297086.md | 8 | ||||
-rw-r--r-- | .changelogs/unreleased/2023-03-03T08_08_41_21078057.md | 8 | ||||
-rw-r--r-- | .changelogs/unreleased/2023-04-28T20_41_56_101798423.md | 7 | ||||
-rw-r--r-- | Cargo.lock | 20 | ||||
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | assets/default_config.toml | 6 | ||||
-rw-r--r-- | src/cli.rs | 2 | ||||
-rw-r--r-- | src/config.rs | 3 | ||||
-rw-r--r-- | src/error.rs | 7 | ||||
-rw-r--r-- | src/format.rs | 1 | ||||
-rw-r--r-- | src/fragment.rs | 77 | ||||
-rw-r--r-- | tests/generate_command.rs | 2 | ||||
-rw-r--r-- | tests/new_command.rs | 28 | ||||
-rw-r--r-- | tests/new_command_creates_default_header.rs | 30 | ||||
-rw-r--r-- | tests/new_command_editor.rs | 2 | ||||
-rw-r--r-- | tests/release_command.rs | 4 | ||||
-rw-r--r-- | tests/verify_metadata_command.rs | 2 |
20 files changed, 72 insertions, 158 deletions
diff --git a/.changelog.toml b/.changelog.toml index 05f414d..1c68941 100644 --- a/.changelog.toml +++ b/.changelog.toml @@ -24,11 +24,9 @@ edit_data = true # # The format to edit the header with. -# Possible values: "yaml", "toml" +# Possible values: "toml" # -# Right now, only "yaml" is supported -# -edit_format = "Yaml" +edit_format = "toml" # Set whether and how to use git after creating a new entry # diff --git a/.changelogs/0.1.0/2022-09-18T10_40_28_565776238.md b/.changelogs/0.1.0/2022-09-18T10_40_28_565776238.md index 94a3f0c..c9efd77 100644 --- a/.changelogs/0.1.0/2022-09-18T10_40_28_565776238.md +++ b/.changelogs/0.1.0/2022-09-18T10_40_28_565776238.md @@ -1,8 +1,8 @@ ---- -type: Misc -subject: Initial Implementation ++++ +type = "Misc" +subject = "Initial Implementation" ---- ++++ This marks the initial implementation of `cargo-changelog`. diff --git a/.changelogs/unreleased/2023-03-02T07_41_23_894605341.md b/.changelogs/unreleased/2023-03-02T07_41_23_894605341.md index ae7a88a..d023b75 100644 --- a/.changelogs/unreleased/2023-03-02T07_41_23_894605341.md +++ b/.changelogs/unreleased/2023-03-02T07_41_23_894605341.md @@ -1,8 +1,8 @@ ---- -subject: Update MSRV -type: Misc ++++ +subject = "Update MSRV" +type = "Misc" ---- ++++ The MSRV was updated to 1.67.0, mostly because dependencies require a more recent Rust version. diff --git a/.changelogs/unreleased/2023-03-02T07_43_21_335297086.md b/.changelogs/unreleased/2023-03-02T07_43_21_335297086.md index 32817b6..d031cc5 100644 --- a/.changelogs/unreleased/2023-03-02T07_43_21_335297086.md +++ b/.changelogs/unreleased/2023-03-02T07_43_21_335297086.md @@ -1,6 +1,6 @@ ---- -type: Misc -subject: Updated dependencies ---- ++++ +type = "Misc" +subject = "Updated dependencies" ++++ Dependencies where updated. diff --git a/.changelogs/unreleased/2023-03-03T08_08_41_21078057.md b/.changelogs/unreleased/2023-03-03T08_08_41_21078057.md index 117fe30..990ccba 100644 --- a/.changelogs/unreleased/2023-03-03T08_08_41_21078057.md +++ b/.changelogs/unreleased/2023-03-03T08_08_41_21078057.md @@ -1,8 +1,8 @@ ---- -subject: '"Show" subcommand' -type: Feature ++++ +subject = "'\"Show\" subcommand'" +type = "Feature" ---- ++++ A "show" subcommand was added to print changelog fragments either as text or as JSON. diff --git a/.changelogs/unreleased/2023-04-28T20_41_56_101798423.md b/.changelogs/unreleased/2023-04-28T20_41_56_101798423.md new file mode 100644 index 0000000..9acc85b --- /dev/null +++ b/.changelogs/unreleased/2023-04-28T20_41_56_101798423.md @@ -0,0 +1,7 @@ ++++ +type = "Feature" +subject = "Completely removed YAML" + ++++ + +YAML got removed as it is an ambigious format and should generally be avoided. @@ -134,7 +134,6 @@ dependencies = [ "semver", "serde", "serde_json", - "serde_yaml", "tempfile", "thiserror", "time", @@ -1010,19 +1009,6 @@ dependencies = [ ] [[package]] -name = "serde_yaml" -version = "0.9.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb06d4b6cdaef0e0c51fa881acb721bed3c924cfaa71d9c94a3b771dfdf6567" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] name = "sha-1" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1316,12 +1302,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] -name = "unsafe-libyaml" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68" - -[[package]] name = "url" version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -30,7 +30,6 @@ miette = { version = "5.5.0", features = ["fancy"] } semver = "1.0.16" serde = { version = "1", features = [ "derive" ] } serde_json = "1" -serde_yaml = "0.9.17" thiserror = "1.0.38" time = { version = "0.3.20", features = [ "formatting", "macros" ] } toml = "0.7.3" diff --git a/assets/default_config.toml b/assets/default_config.toml index 05f414d..9c0c75d 100644 --- a/assets/default_config.toml +++ b/assets/default_config.toml @@ -24,11 +24,11 @@ edit_data = true # # The format to edit the header with. -# Possible values: "yaml", "toml" +# Possible values: "toml" # -# Right now, only "yaml" is supported +# Right now, only "toml" is supported # -edit_format = "Yaml" +edit_format = "toml" # Set whether and how to use git after creating a new entry # @@ -39,7 +39,7 @@ pub enum Command { #[clap(short, long, action = clap::ArgAction::Set, default_value_t = true)] edit: bool, - #[clap(short, long, value_enum, value_parser, default_value_t = Format::Yaml)] + #[clap(short, long, value_enum, value_parser, default_value_t = Format::Toml)] format: Format, /// Read the changelog entry text from some path or stdin (via "-") diff --git a/src/config.rs b/src/config.rs index 741cc78..cae5d7b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -90,8 +90,8 @@ pub fn changelog_default() -> PathBuf { } #[derive(Debug, serde::Deserialize, serde::Serialize)] +#[serde(rename_all = "lowercase")] pub enum EditFormat { - Yaml, Toml, } @@ -100,7 +100,6 @@ impl std::str::FromStr for EditFormat { fn from_str(s: &str) -> Result<Self, Self::Err> { match s { - "yaml" => Ok(Self::Yaml), "toml" => Ok(Self::Toml), fmt => Err(miette::miette!("Unknown edit format {}", fmt)), } diff --git a/src/error.rs b/src/error.rs index 1c2e9c4..5d869bc 100644 --- a/src/error.rs +++ b/src/error.rs @@ -82,10 +82,10 @@ pub enum FragmentError { #[error("IO")] Io(#[from] std::io::Error), - #[error("Expected header seperator: '---' or '+++', found: '{0}'")] + #[error("Expected header seperator: '+++', found: '{0}'")] ExpectedSeperator(String), - #[error("Header seperator '---' or '+++' missing")] + #[error("Header seperator '+++' missing")] HeaderSeperatorMissing, #[error("TOML serialization error")] @@ -94,9 +94,6 @@ pub enum FragmentError { #[error("TOML deserialization error")] TomlDe(#[from] toml::de::Error), - #[error("YAML error")] - Yaml(#[from] serde_yaml::Error), - #[error("Type Error: Expected {exp}, got {recv} for field {field_name}")] DataType { exp: String, diff --git a/src/format.rs b/src/format.rs index b8d29e5..d159523 100644 --- a/src/format.rs +++ b/src/format.rs @@ -1,5 +1,4 @@ #[derive(Copy, Clone, Debug, PartialEq, Eq, clap::ValueEnum)] pub enum Format { - Yaml, Toml, } diff --git a/src/fragment.rs b/src/fragment.rs index fd925f5..9552ef3 100644 --- a/src/fragment.rs +++ b/src/fragment.rs @@ -35,9 +35,7 @@ impl Fragment { let mut lines = buf.lines(); let format = if let Some(header_sep) = lines.next() { - if header_sep == "---" { - Format::Yaml - } else if header_sep == "+++" { + if header_sep == "+++" { Format::Toml } else { return Err(FragmentError::ExpectedSeperator(header_sep.to_string())); @@ -49,13 +47,10 @@ impl Fragment { let header = { let header = lines .by_ref() - .take_while(|line| *line != "---" && *line != "+++") + .take_while(|line| *line != "+++") .collect::<Vec<_>>(); match format { - Format::Yaml => { - serde_yaml::from_str::<HashMap<String, FragmentData>>(&header.join("\n"))? - } Format::Toml => { toml::from_str::<HashMap<String, FragmentData>>(&header.join("\n"))? } @@ -69,11 +64,6 @@ impl Fragment { pub fn write_to<W: Write>(&self, writer: &mut W, format: Format) -> Result<(), FragmentError> { let (seperator, header) = match format { - Format::Yaml => { - let header = serde_yaml::to_string(&self.header)?; - - ("---", header) - } Format::Toml => { let header = toml::to_string(&self.header)?; ("+++", header) @@ -223,8 +213,8 @@ mod tests { #[test] fn read_empty_fragment() { let s = indoc::indoc!( - r#"--- - --- + r#"+++ + +++ "# ); @@ -238,8 +228,8 @@ mod tests { #[test] fn read_empty_header() { let s = indoc::indoc!( - r#"--- - --- + r#"+++ + +++ This is some text "# ); @@ -252,43 +242,6 @@ mod tests { } #[test] - fn read_empty_content() { - let s = indoc::indoc!( - r#"--- - foo: bar - --- - "# - ); - - let f = Fragment::from_reader(&mut Cursor::new(s)); - assert!(f.is_ok(), "Not ok: {f:?}"); - let f = f.unwrap(); - assert!(f.text().is_empty(), "Not empty: '{}'", f.text()); - assert!( - f.header().contains_key("foo"), - "'foo' key missing from header: {:?}", - f.header() - ); - assert!( - std::matches!(f.header().get("foo").unwrap(), FragmentData::Str(_)), - "'foo' key does not point to String: {:?}", - f.header() - ); - - let foo = match f.header().get("foo").unwrap() { - FragmentData::Str(s) => s, - other => panic!("Expected String, found: {other:?}"), - }; - - assert_eq!( - foo, - "bar", - "'foo' key content is not 'bar': {:?}", - f.header() - ); - } - - #[test] fn read_toml_header() { let s = indoc::indoc!( r#"+++ @@ -326,24 +279,6 @@ mod tests { } #[test] - fn test_write_to_yaml() { - let mut buffer = std::io::Cursor::new(Vec::with_capacity(1024)); - let mut header = HashMap::new(); - header.insert("foo".to_string(), FragmentData::Bool(true)); - header.insert("bar".to_string(), FragmentData::Str(String::from("baz"))); - - let frag = Fragment::new(header, String::from("testtext")); - let res = frag.write_to(&mut buffer, Format::Yaml); - assert!(res.is_ok(), "Error writing: {}", res.unwrap_err()); - - let buffer = String::from_utf8(buffer.into_inner()).unwrap(); - assert!(buffer.contains("---\n")); - assert!(buffer.contains("foo: true\n")); - assert!(buffer.contains("bar: baz\n")); - assert!(buffer.contains("\n---\ntesttext\n")); - } - - #[test] fn test_deserializing_data_desc_with_one_of() { let s = r#" required = false diff --git a/tests/generate_command.rs b/tests/generate_command.rs index c66682b..e01c58b 100644 --- a/tests/generate_command.rs +++ b/tests/generate_command.rs @@ -45,7 +45,7 @@ fn generate_command_moves_from_unreleased_dir() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", diff --git a/tests/new_command.rs b/tests/new_command.rs index f9f8680..702e9de 100644 --- a/tests/new_command.rs +++ b/tests/new_command.rs @@ -3,7 +3,7 @@ use std::io::Write; mod common; #[test] -fn new_command_creates_yaml_file() { +fn new_command_creates_toml_file() { let temp_dir = tempfile::Builder::new() .prefix("cargo-changelog") .tempdir() @@ -13,7 +13,7 @@ fn new_command_creates_yaml_file() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", @@ -60,18 +60,18 @@ fn new_command_creates_yaml_file() { } let new_fragment_file_contents = std::fs::read_to_string(new_fragment_file.path()).unwrap(); - let yaml_header = new_fragment_file_contents + let toml_header = new_fragment_file_contents .lines() .skip(1) - .take_while(|line| *line != "---") + .take_while(|line| *line != "+++") .collect::<Vec<_>>() .join("\n"); - let yaml = serde_yaml::from_str::<serde_yaml::Value>(&yaml_header); + let toml = toml::from_str::<toml::Value>(&toml_header); assert!( - yaml.is_ok(), + toml.is_ok(), "Failed to parse fragment file: {:?}", - yaml.unwrap_err() + toml.unwrap_err() ); } @@ -98,7 +98,7 @@ fn new_command_creates_unreleased_gitkeep() { } #[test] -fn new_command_with_text_creates_yaml_with_text_from_stdin() { +fn new_command_with_text_creates_toml_with_text_from_stdin() { let temp_dir = tempfile::Builder::new() .prefix("cargo-changelog") .tempdir() @@ -126,7 +126,7 @@ fn new_command_with_text_creates_yaml_with_text_from_stdin() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", @@ -155,7 +155,7 @@ fn new_command_with_text_creates_yaml_with_text_from_stdin() { let contents = new_fragment_file_contents .lines() .skip(1) - .skip_while(|line| *line != "---") + .skip_while(|line| *line != "+++") .skip(1) .collect::<Vec<_>>() .join("\n"); @@ -164,7 +164,7 @@ fn new_command_with_text_creates_yaml_with_text_from_stdin() { } #[test] -fn new_command_with_text_creates_yaml_with_text_from_file() { +fn new_command_with_text_creates_toml_with_text_from_file() { let temp_dir = tempfile::Builder::new() .prefix("cargo-changelog") .tempdir() @@ -192,7 +192,7 @@ fn new_command_with_text_creates_yaml_with_text_from_file() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", @@ -223,7 +223,7 @@ fn new_command_with_text_creates_yaml_with_text_from_file() { let contents = new_fragment_file_contents .lines() .skip(1) - .skip_while(|line| *line != "---") + .skip_while(|line| *line != "+++") .skip(1) .collect::<Vec<_>>() .join("\n"); @@ -273,7 +273,7 @@ fn new_command_creates_toml_header() { .collect::<Vec<_>>() .join("\n"); - let toml = toml::from_str::<serde_yaml::Value>(&toml_header); + let toml = toml::from_str::<toml::Value>(&toml_header); assert!( toml.is_ok(), "Failed to parse fragment file: {:?}", diff --git a/tests/new_command_creates_default_header.rs b/tests/new_command_creates_default_header.rs index 51342f0..c14bcb0 100644 --- a/tests/new_command_creates_default_header.rs +++ b/tests/new_command_creates_default_header.rs @@ -33,7 +33,7 @@ fn new_command_creates_default_header() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", @@ -58,30 +58,30 @@ fn new_command_creates_default_header() { .unwrap(); let new_fragment_file_contents = std::fs::read_to_string(fragment.path()).unwrap(); - let yaml_header = new_fragment_file_contents + let toml_header = new_fragment_file_contents .lines() .skip(1) - .take_while(|line| *line != "---") + .take_while(|line| *line != "+++") .collect::<Vec<_>>() .join("\n"); - let yaml = serde_yaml::from_str::<serde_yaml::Value>(&yaml_header); + let toml = toml::from_str::<toml::Value>(&toml_header); assert!( - yaml.is_ok(), + toml.is_ok(), "Failed to parse fragment file: {:?}", - yaml.unwrap_err() + toml.unwrap_err() ); - let yaml = yaml.unwrap(); + let toml = toml.unwrap(); - let field = yaml.get("field").unwrap(); + let field = toml.get("field").unwrap(); assert!(field.is_bool()); - assert!(std::matches!(field, serde_yaml::Value::Bool(true))); + assert!(std::matches!(field, toml::Value::Boolean(true))); - let number = yaml.get("number").unwrap(); - assert!(number.is_i64()); - assert_eq!(number.as_i64().unwrap(), 345); + let number = toml.get("number").unwrap(); + assert!(number.is_integer()); + assert_eq!(number.as_integer().unwrap(), 345); - let number = yaml.get("issue").unwrap(); - assert!(number.is_i64()); - assert_eq!(number.as_i64().unwrap(), 123); + let number = toml.get("issue").unwrap(); + assert!(number.is_integer()); + assert_eq!(number.as_integer().unwrap(), 123); } diff --git a/tests/new_command_editor.rs b/tests/new_command_editor.rs index 7cdafdc..b4a30b4 100644 --- a/tests/new_command_editor.rs +++ b/tests/new_command_editor.rs @@ -73,7 +73,7 @@ fn new_command_opens_editor() { .args([ "new", "--interactive=false", - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", diff --git a/tests/release_command.rs b/tests/release_command.rs index 552c470..24cad11 100644 --- a/tests/release_command.rs +++ b/tests/release_command.rs @@ -16,7 +16,7 @@ fn release_command_works() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", @@ -64,7 +64,7 @@ fn release_command_works_for_alpha_release() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", diff --git a/tests/verify_metadata_command.rs b/tests/verify_metadata_command.rs index 847d9fe..3c728af 100644 --- a/tests/verify_metadata_command.rs +++ b/tests/verify_metadata_command.rs @@ -30,7 +30,7 @@ fn verify_metadata_command_succeeds_with_empty_changelog() { self::common::cargo_changelog_new(temp_dir.path()) .args([ - "--format=yaml", + "--format=toml", "--set", "issue=123", "--set", |