diff --git a/src/config/init.rs b/src/config/init.rs index 21b10a39..04b502d8 100644 --- a/src/config/init.rs +++ b/src/config/init.rs @@ -120,16 +120,17 @@ impl Prompter { &under(&path, "CHANGELOG.md"), ); - package_config( + PackageConfig { name, path, - vec![VersionedFile { + versioned_files: vec![VersionedFile { path: version_file_path, format: parse_file_format(&format_str), selector: None, }], - changelog, - ) + changelog: Some(changelog), + ..Default::default() + } } fn discovered(&mut self, found: &[DiscoveredPackage]) -> Option> { @@ -167,43 +168,18 @@ impl Prompter { } } -fn package_config( - name: String, - path: String, - versioned_files: Vec, - changelog: String, -) -> PackageConfig { - PackageConfig { - name, - path, - versioned_files, - changelog: Some(changelog), - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - build_metadata: None, - publishers: vec![], - update_lockfiles: None, - version_source: None, - } -} - fn discovered_package(found: &DiscoveredPackage) -> PackageConfig { - package_config( - found.name.clone(), - found.path.clone(), - vec![VersionedFile { + PackageConfig { + name: found.name.clone(), + path: found.path.clone(), + versioned_files: vec![VersionedFile { path: under(&found.path, found.manifest), format: found.format.clone(), selector: None, }], - under(&found.path, "CHANGELOG.md"), - ) + changelog: Some(under(&found.path, "CHANGELOG.md")), + ..Default::default() + } } const ALLOWED_FORMATS: &[&str] = &["toml", "json", "xml", "gradle", "gomod", "txt"]; diff --git a/src/config/migrate.rs b/src/config/migrate.rs index e2c39d3e..7ba2236a 100644 --- a/src/config/migrate.rs +++ b/src/config/migrate.rs @@ -353,18 +353,7 @@ pub fn build_config_from_releaserc(raw: &str) -> Result<(Config, MigrationReport selector: None, }], changelog: Some(changelog.unwrap_or_else(|| "CHANGELOG.md".to_string())), - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - build_metadata: None, - publishers: vec![], - update_lockfiles: None, - version_source: None, + ..Default::default() }; report.warnings.push( diff --git a/src/config/migrate/changesets.rs b/src/config/migrate/changesets.rs index ea11c391..70ae268d 100644 --- a/src/config/migrate/changesets.rs +++ b/src/config/migrate/changesets.rs @@ -148,18 +148,7 @@ fn scaffold_package(name: String, path: String) -> PackageConfig { selector: None, }], changelog: Some(changelog), - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - build_metadata: None, - publishers: vec![], - update_lockfiles: None, - version_source: None, + ..Default::default() } } diff --git a/src/config/migrate/release_please.rs b/src/config/migrate/release_please.rs index ad039e59..8988aa61 100644 --- a/src/config/migrate/release_please.rs +++ b/src/config/migrate/release_please.rs @@ -198,18 +198,7 @@ fn build_package( .clone() .unwrap_or_else(|| "CHANGELOG.md".to_string()), ), - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - build_metadata: None, - publishers: vec![], - update_lockfiles: None, - version_source: None, + ..Default::default() } } diff --git a/src/config/migrate/standard_version.rs b/src/config/migrate/standard_version.rs index 69fcf569..992199fd 100644 --- a/src/config/migrate/standard_version.rs +++ b/src/config/migrate/standard_version.rs @@ -148,18 +148,7 @@ pub(super) fn build(raw: &str) -> Result<(Config, MigrationReport)> { path: ".".to_string(), versioned_files, changelog: Some("CHANGELOG.md".to_string()), - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - build_metadata: None, - publishers: vec![], - update_lockfiles: None, - version_source: None, + ..Default::default() }; report.warnings.push( diff --git a/src/config/mod.rs b/src/config/mod.rs index 2c63d455..2cf8f717 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -200,18 +200,7 @@ impl Config { path: ".".to_string(), versioned_files, changelog: Some("CHANGELOG.md".to_string()), - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - build_metadata: None, - publishers: vec![], - update_lockfiles: None, - version_source: None, + ..Default::default() }] }, } diff --git a/src/config/package.rs b/src/config/package.rs index 90a43eb5..f478533c 100644 --- a/src/config/package.rs +++ b/src/config/package.rs @@ -5,7 +5,7 @@ use crate::conventional_commits::BumpType; use super::types::{BuildMetadata, HooksConfig, PublisherConfig, VersionSourcePolicy}; use super::workspace::WorkspaceConfig; -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, Default)] pub struct PackageConfig { pub name: String, #[serde(default)] @@ -384,22 +384,10 @@ mod tests { fn pkg(path: &str, shared: &[&str]) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: "api".to_string(), path: path.to_string(), - versioned_files: Vec::new(), - changelog: None, shared_paths: shared.iter().map(|s| s.to_string()).collect(), - depends_on: Vec::new(), - versioning: None, - tag_template: None, - version_template: None, - floating_tags: None, - latest_tag: None, - hooks: None, - publishers: Vec::new(), - update_lockfiles: None, + ..Default::default() } } diff --git a/src/config/tests.rs b/src/config/tests.rs index 71eae571..cda4f60d 100644 --- a/src/config/tests.rs +++ b/src/config/tests.rs @@ -194,22 +194,9 @@ fn effective_versioning_inherits_workspace() { ..WorkspaceConfig::default() }; let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "a".into(), path: ".".into(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; assert_eq!( pkg.effective_versioning(&ws, Vec::new), @@ -224,22 +211,10 @@ fn effective_versioning_package_overrides() { ..WorkspaceConfig::default() }; let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "a".into(), path: ".".into(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], versioning: Some(VersioningStrategy::Zerover), - tag_template: None, - version_template: None, - hooks: None, - latest_tag: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; assert_eq!( pkg.effective_versioning(&ws, Vec::new), @@ -254,22 +229,9 @@ fn effective_versioning_does_not_read_tags_when_strategy_is_configured() { ..WorkspaceConfig::default() }; let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "a".into(), path: ".".into(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - latest_tag: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; let strategy = pkg.effective_versioning(&ws, || panic!("tags scanned despite configured strategy")); @@ -280,22 +242,9 @@ fn effective_versioning_does_not_read_tags_when_strategy_is_configured() { fn effective_versioning_autodetects_from_tags_when_unset() { let ws = WorkspaceConfig::default(); let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "a".into(), path: ".".into(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - versioning: None, - latest_tag: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; let tags = vec!["v2024.04.18", "v2024.05.01"]; assert_eq!( @@ -308,22 +257,9 @@ fn effective_versioning_autodetects_from_tags_when_unset() { fn effective_versioning_falls_back_to_semver_without_tags() { let ws = WorkspaceConfig::default(); let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "a".into(), path: ".".into(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - latest_tag: None, - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; assert_eq!( pkg.effective_versioning(&ws, Vec::new), @@ -333,22 +269,10 @@ fn effective_versioning_falls_back_to_semver_without_tags() { fn make_pkg(name: &str, tag_template: Option<&str>) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: name.into(), path: ".".into(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - latest_tag: None, - depends_on: vec![], - versioning: None, tag_template: tag_template.map(String::from), - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() } } @@ -580,8 +504,6 @@ fn json_serializes_camel_case() { ..WorkspaceConfig::default() }, packages: vec![PackageConfig { - build_metadata: None, - version_source: None, name: "app".into(), path: ".".into(), versioned_files: vec![VersionedFile { @@ -589,17 +511,9 @@ fn json_serializes_camel_case() { format: FileFormat::Toml, selector: None, }], - changelog: None, - latest_tag: None, shared_paths: vec!["shared/".into()], - depends_on: vec![], - versioning: None, tag_template: Some("{name}@v{version}".into()), - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }], }; let serialized = handler.serialize(&config).unwrap(); @@ -634,8 +548,6 @@ fn toml_keeps_snake_case() { ..WorkspaceConfig::default() }, packages: vec![PackageConfig { - build_metadata: None, - version_source: None, name: "app".into(), path: ".".into(), versioned_files: vec![VersionedFile { @@ -643,17 +555,9 @@ fn toml_keeps_snake_case() { format: FileFormat::Toml, selector: None, }], - latest_tag: None, - changelog: None, shared_paths: vec!["shared/".into()], - depends_on: vec![], - versioning: None, tag_template: Some("{name}@v{version}".into()), - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }], }; let serialized = handler.serialize(&config).unwrap(); @@ -1215,22 +1119,10 @@ fn depends_on_deserializes_snake_case() { fn tag_prefix_no_version_placeholder() { let ws = WorkspaceConfig::default(); let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "app".to_string(), path: ".".to_string(), - latest_tag: None, - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - versioning: None, tag_template: Some("release-latest".to_string()), - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; assert_eq!(pkg.tag_prefix(&ws, false), "release-latest"); } @@ -1239,22 +1131,10 @@ fn tag_prefix_no_version_placeholder() { fn tag_for_version_replaces_placeholders() { let ws = WorkspaceConfig::default(); let pkg = PackageConfig { - build_metadata: None, - version_source: None, name: "api".to_string(), - latest_tag: None, path: ".".to_string(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - versioning: None, tag_template: Some("{name}/v{version}".to_string()), - version_template: None, - hooks: None, - floating_tags: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() }; assert_eq!(pkg.tag_for_version(&ws, true, "1.2.3"), "api/v1.2.3"); } diff --git a/src/manifest.rs b/src/manifest.rs index fab8310f..2a86d134 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -259,8 +259,6 @@ mod tests { fn pkg(name: &str, path: &str) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: name.to_string(), path: ".".to_string(), versioned_files: vec![VersionedFile { @@ -268,17 +266,7 @@ mod tests { format: FileFormat::Json, selector: None, }], - changelog: None, - shared_paths: Vec::new(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() } } diff --git a/src/monorepo/graph_report/tests.rs b/src/monorepo/graph_report/tests.rs index 633236a0..18da1f18 100644 --- a/src/monorepo/graph_report/tests.rs +++ b/src/monorepo/graph_report/tests.rs @@ -2,25 +2,13 @@ use super::*; fn pkg(name: &str, deps: &[&str]) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: name.to_string(), path: name.to_string(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], depends_on: deps .iter() .map(|s| crate::config::Dependency::Name(s.to_string())) .collect(), - update_lockfiles: None, - versioning: None, - tag_template: None, - version_template: None, - floating_tags: None, - latest_tag: None, - hooks: None, - publishers: vec![], + ..Default::default() } } diff --git a/src/monorepo/run/graph.rs b/src/monorepo/run/graph.rs index 04c50991..39515326 100644 --- a/src/monorepo/run/graph.rs +++ b/src/monorepo/run/graph.rs @@ -193,25 +193,13 @@ mod tests { fn pkg(name: &str, deps: &[&str]) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: name.to_string(), path: name.to_string(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], depends_on: deps .iter() .map(|s| crate::config::Dependency::Name(s.to_string())) .collect(), - update_lockfiles: None, - versioning: None, - tag_template: None, - version_template: None, - floating_tags: None, - latest_tag: None, - hooks: None, - publishers: vec![], + ..Default::default() } } diff --git a/src/monorepo/tests.rs b/src/monorepo/tests.rs index d2841808..fdd678b2 100644 --- a/src/monorepo/tests.rs +++ b/src/monorepo/tests.rs @@ -525,22 +525,10 @@ fn pick_higher_semver_strips_leading_v() { fn make_pkg(name: &str, path: &str, shared: &[&str]) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: name.into(), path: path.into(), - versioned_files: vec![], - changelog: None, shared_paths: shared.iter().map(|s| s.to_string()).collect(), - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - hooks: None, - floating_tags: None, - latest_tag: None, - publishers: vec![], - update_lockfiles: None, + ..Default::default() } } diff --git a/src/validate/tests.rs b/src/validate/tests.rs index d4b75752..8de6f148 100644 --- a/src/validate/tests.rs +++ b/src/validate/tests.rs @@ -14,22 +14,9 @@ fn make_config(packages: Vec) -> Config { fn make_package(name: &str, path: &str) -> PackageConfig { PackageConfig { - build_metadata: None, - version_source: None, name: name.to_string(), path: path.to_string(), - versioned_files: vec![], - changelog: None, - shared_paths: vec![], - depends_on: vec![], - versioning: None, - tag_template: None, - version_template: None, - floating_tags: None, - latest_tag: None, - publishers: vec![], - update_lockfiles: None, - hooks: None, + ..Default::default() } }