aboutsummaryrefslogtreecommitdiff
path: root/release/src
diff options
context:
space:
mode:
Diffstat (limited to 'release/src')
-rw-r--r--release/src/main.rs24
-rw-r--r--release/src/semver_check.rs25
-rw-r--r--release/src/types.rs2
3 files changed, 29 insertions, 22 deletions
diff --git a/release/src/main.rs b/release/src/main.rs
index 25f31486a..7850bbb8d 100644
--- a/release/src/main.rs
+++ b/release/src/main.rs
@@ -141,6 +141,14 @@ fn list_crates(root: &PathBuf) -> Result<BTreeMap<CrateId, Crate>> {
141 } 141 }
142 } 142 }
143 143
144 let mut configs = metadata.build.clone();
145 if configs.is_empty() {
146 configs.push(BuildConfig {
147 features: vec![],
148 target: None,
149 })
150 }
151
144 crates.insert( 152 crates.insert(
145 id.clone(), 153 id.clone(),
146 Crate { 154 Crate {
@@ -148,10 +156,7 @@ fn list_crates(root: &PathBuf) -> Result<BTreeMap<CrateId, Crate>> {
148 version: parsed.package.version, 156 version: parsed.package.version,
149 path, 157 path,
150 dependencies, 158 dependencies,
151 config: metadata.build.first().cloned().unwrap_or_else(|| BuildConfig { 159 configs,
152 features: vec![],
153 target: None,
154 }),
155 }, 160 },
156 ); 161 );
157 } 162 }
@@ -332,10 +337,11 @@ fn main() -> Result<()> {
332 c.path.join("Cargo.toml").display().to_string(), 337 c.path.join("Cargo.toml").display().to_string(),
333 ]; 338 ];
334 339
340 let config = c.configs.first().unwrap(); // TODO
335 args.push("--features".into()); 341 args.push("--features".into());
336 args.push(c.config.features.join(",")); 342 args.push(config.features.join(","));
337 343
338 if let Some(target) = &c.config.target { 344 if let Some(target) = &config.target {
339 args.push("--target".into()); 345 args.push("--target".into());
340 args.push(target.clone()); 346 args.push(target.clone());
341 } 347 }
@@ -387,6 +393,8 @@ fn update_changelog(repo: &Path, c: &Crate) -> Result<()> {
387} 393}
388 394
389fn publish_release(_repo: &Path, c: &Crate, push: bool) -> Result<()> { 395fn publish_release(_repo: &Path, c: &Crate, push: bool) -> Result<()> {
396 let config = c.configs.first().unwrap(); // TODO
397
390 let mut args: Vec<String> = vec![ 398 let mut args: Vec<String> = vec![
391 "publish".to_string(), 399 "publish".to_string(),
392 "--manifest-path".to_string(), 400 "--manifest-path".to_string(),
@@ -394,9 +402,9 @@ fn publish_release(_repo: &Path, c: &Crate, push: bool) -> Result<()> {
394 ]; 402 ];
395 403
396 args.push("--features".into()); 404 args.push("--features".into());
397 args.push(c.config.features.join(",")); 405 args.push(config.features.join(","));
398 406
399 if let Some(target) = &c.config.target { 407 if let Some(target) = &config.target {
400 args.push("--target".into()); 408 args.push("--target".into());
401 args.push(target.clone()); 409 args.push(target.clone());
402 } 410 }
diff --git a/release/src/semver_check.rs b/release/src/semver_check.rs
index e20bc8574..a70c56376 100644
--- a/release/src/semver_check.rs
+++ b/release/src/semver_check.rs
@@ -1,21 +1,20 @@
1use std::fs; 1use std::path::PathBuf;
2use std::io::Write;
3use std::path::{Path, PathBuf};
4 2
5use cargo_semver_checks::{Check, GlobalConfig, ReleaseType, Rustdoc}; 3use cargo_semver_checks::{Check, GlobalConfig, ReleaseType, Rustdoc};
6 4
7use crate::cargo::CargoArgsBuilder; 5use crate::cargo::CargoArgsBuilder;
8use crate::types::Crate; 6use crate::types::{BuildConfig, Crate};
9use crate::windows_safe_path;
10 7
11/// Return the minimum required bump for the next release. 8/// Return the minimum required bump for the next release.
12/// Even if nothing changed this will be [ReleaseType::Patch] 9/// Even if nothing changed this will be [ReleaseType::Patch]
13pub fn minimum_update(krate: &Crate) -> Result<ReleaseType, anyhow::Error> { 10pub fn minimum_update(krate: &Crate) -> Result<ReleaseType, anyhow::Error> {
14 println!("Crate = {:?}", krate); 11 println!("Crate = {:?}", krate);
15 12
13 let config = krate.configs.first().unwrap(); // TODO
14
16 let package_name = krate.name.clone(); 15 let package_name = krate.name.clone();
17 let package_path = krate.path.clone(); 16 let package_path = krate.path.clone();
18 let current_path = build_doc_json(krate)?; 17 let current_path = build_doc_json(krate, config)?;
19 18
20 let baseline = Rustdoc::from_registry_latest_crate_version(); 19 let baseline = Rustdoc::from_registry_latest_crate_version();
21 let doc = Rustdoc::from_path(&current_path); 20 let doc = Rustdoc::from_path(&current_path);
@@ -23,10 +22,10 @@ pub fn minimum_update(krate: &Crate) -> Result<ReleaseType, anyhow::Error> {
23 semver_check.with_default_features(); 22 semver_check.with_default_features();
24 semver_check.set_baseline(baseline); 23 semver_check.set_baseline(baseline);
25 semver_check.set_packages(vec![package_name]); 24 semver_check.set_packages(vec![package_name]);
26 let extra_current_features = krate.config.features.clone(); 25 let extra_current_features = config.features.clone();
27 let extra_baseline_features = krate.config.features.clone(); 26 let extra_baseline_features = config.features.clone();
28 semver_check.set_extra_features(extra_current_features, extra_baseline_features); 27 semver_check.set_extra_features(extra_current_features, extra_baseline_features);
29 if let Some(target) = &krate.config.target { 28 if let Some(target) = &config.target {
30 semver_check.set_build_target(target.clone()); 29 semver_check.set_build_target(target.clone());
31 } 30 }
32 let mut cfg = GlobalConfig::new(); 31 let mut cfg = GlobalConfig::new();
@@ -48,7 +47,7 @@ pub fn minimum_update(krate: &Crate) -> Result<ReleaseType, anyhow::Error> {
48 Ok(min_required_update) 47 Ok(min_required_update)
49} 48}
50 49
51pub(crate) fn build_doc_json(krate: &Crate) -> Result<PathBuf, anyhow::Error> { 50pub(crate) fn build_doc_json(krate: &Crate, config: &BuildConfig) -> Result<PathBuf, anyhow::Error> {
52 let target_dir = std::env::var("CARGO_TARGET_DIR"); 51 let target_dir = std::env::var("CARGO_TARGET_DIR");
53 52
54 let target_path = if let Ok(target) = target_dir { 53 let target_path = if let Ok(target) = target_dir {
@@ -58,7 +57,7 @@ pub(crate) fn build_doc_json(krate: &Crate) -> Result<PathBuf, anyhow::Error> {
58 }; 57 };
59 58
60 let current_path = target_path; 59 let current_path = target_path;
61 let current_path = if let Some(target) = &krate.config.target { 60 let current_path = if let Some(target) = &config.target {
62 current_path.join(target.clone()) 61 current_path.join(target.clone())
63 } else { 62 } else {
64 current_path 63 current_path
@@ -68,7 +67,7 @@ pub(crate) fn build_doc_json(krate: &Crate) -> Result<PathBuf, anyhow::Error> {
68 .join(format!("{}.json", krate.name.to_string().replace("-", "_"))); 67 .join(format!("{}.json", krate.name.to_string().replace("-", "_")));
69 68
70 std::fs::remove_file(&current_path).ok(); 69 std::fs::remove_file(&current_path).ok();
71 let features = krate.config.features.clone(); 70 let features = config.features.clone();
72 71
73 log::info!("Building doc json for {} with features: {:?}", krate.name, features); 72 log::info!("Building doc json for {} with features: {:?}", krate.name, features);
74 73
@@ -83,7 +82,7 @@ pub(crate) fn build_doc_json(krate: &Crate) -> Result<PathBuf, anyhow::Error> {
83 .toolchain("nightly-2025-06-29") 82 .toolchain("nightly-2025-06-29")
84 .subcommand("rustdoc") 83 .subcommand("rustdoc")
85 .features(&features); 84 .features(&features);
86 let cargo_builder = if let Some(target) = &krate.config.target { 85 let cargo_builder = if let Some(target) = &config.target {
87 cargo_builder.target(target.clone()) 86 cargo_builder.target(target.clone())
88 } else { 87 } else {
89 cargo_builder 88 cargo_builder
diff --git a/release/src/types.rs b/release/src/types.rs
index 39e8e9f48..c5b774977 100644
--- a/release/src/types.rs
+++ b/release/src/types.rs
@@ -46,5 +46,5 @@ pub struct Crate {
46 pub version: String, 46 pub version: String,
47 pub path: PathBuf, 47 pub path: PathBuf,
48 pub dependencies: Vec<CrateId>, 48 pub dependencies: Vec<CrateId>,
49 pub config: BuildConfig, // TODO make this a vec. 49 pub configs: Vec<BuildConfig>,
50} 50}