summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2023-04-29 10:13:02 +0000
committerGitHub <noreply@github.com>2023-04-29 10:13:02 +0000
commit65370eeb2c3bfd18b500ed04ce086689f5a0d700 (patch)
tree1ff9f51f351cb7e234327e8d1b84bfe81ca002db
parent7c250eece4d07a86443e40b8c97336fc9a6ba5eb (diff)
parentb95c66efe4ef7603ca7d79b1e2003407932d676c (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.toml6
-rw-r--r--.changelogs/0.1.0/2022-09-18T10_40_28_565776238.md8
-rw-r--r--.changelogs/unreleased/2023-03-02T07_41_23_894605341.md8
-rw-r--r--.changelogs/unreleased/2023-03-02T07_43_21_335297086.md8
-rw-r--r--.changelogs/unreleased/2023-03-03T08_08_41_21078057.md8
-rw-r--r--.changelogs/unreleased/2023-04-28T20_41_56_101798423.md7
-rw-r--r--Cargo.lock20
-rw-r--r--Cargo.toml1
-rw-r--r--assets/default_config.toml6
-rw-r--r--src/cli.rs2
-rw-r--r--src/config.rs3
-rw-r--r--src/error.rs7
-rw-r--r--src/format.rs1
-rw-r--r--src/fragment.rs77
-rw-r--r--tests/generate_command.rs2
-rw-r--r--tests/new_command.rs28
-rw-r--r--tests/new_command_creates_default_header.rs30
-rw-r--r--tests/new_command_editor.rs2
-rw-r--r--tests/release_command.rs4
-rw-r--r--tests/verify_metadata_command.rs2
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.
diff --git a/Cargo.lock b/Cargo.lock
index ff55d73..eff0f45 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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"
diff --git a/Cargo.toml b/Cargo.toml
index 885e4bd..c02a9d1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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
#
diff --git a/src/cli.rs b/src/cli.rs
index c0b1301..10e9405 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -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",