Save time on default xtask build (#3647)

This commit is contained in:
Dániel Buga 2025-06-16 17:02:29 +02:00 committed by GitHub
parent f71127446b
commit e05d588f72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 7 deletions

View File

@ -12,9 +12,9 @@ console = "0.15.10"
env_logger = "0.11.5" env_logger = "0.11.5"
esp-metadata = { path = "../esp-metadata", features = ["clap"] } esp-metadata = { path = "../esp-metadata", features = ["clap"] }
jiff = { version = "0.2.13" } jiff = { version = "0.2.13" }
kuchikiki = "0.8.2" kuchikiki = { version = "0.8.2", optional = true }
log = "0.4.22" log = "0.4.22"
minijinja = "2.5.0" minijinja = { version = "2.5.0", default-features = false }
opener = { version = "0.7.2", optional = true } opener = { version = "0.7.2", optional = true }
rocket = { version = "0.5.1", optional = true } rocket = { version = "0.5.1", optional = true }
semver = { version = "1.0.23", features = ["serde"] } semver = { version = "1.0.23", features = ["serde"] }
@ -45,7 +45,7 @@ urlencoding = { version = "2.1.3", optional = true }
pretty_assertions = "1.2.0" pretty_assertions = "1.2.0"
[features] [features]
deploy-docs = ["dep:reqwest"] deploy-docs = ["dep:reqwest", "dep:kuchikiki"]
preview-docs = ["dep:opener", "dep:rocket"] preview-docs = ["dep:opener", "dep:rocket"]
semver-checks = [ "dep:cargo-semver-checks", "dep:rustdoc-types", "dep:flate2", "dep:temp-file" ] semver-checks = [ "dep:cargo-semver-checks", "dep:rustdoc-types", "dep:flate2", "dep:temp-file" ]
release = ["semver-checks", "dep:opener", "dep:urlencoding"] release = ["semver-checks", "dep:opener", "dep:urlencoding"]

View File

@ -5,15 +5,14 @@ use std::{
path::{Path, PathBuf}, path::{Path, PathBuf},
}; };
use anyhow::{Context as _, Result, ensure}; use anyhow::{ensure, Context as _, Result};
use clap::ValueEnum; use clap::ValueEnum;
use esp_metadata::Config; use esp_metadata::Config;
use kuchikiki::traits::*;
use minijinja::Value; use minijinja::Value;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use strum::IntoEnumIterator; use strum::IntoEnumIterator;
use crate::{Chip, Package, cargo::CargoArgsBuilder}; use crate::{cargo::CargoArgsBuilder, Chip, Package};
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Build Documentation // Build Documentation
@ -82,6 +81,7 @@ pub fn build_documentation(
)?; )?;
// Patch the generated documentation to include a select box for the version: // Patch the generated documentation to include a select box for the version:
#[cfg(feature = "deploy-docs")]
patch_documentation_index_for_package(workspace, package, &version, &base_url)?; patch_documentation_index_for_package(workspace, package, &version, &base_url)?;
} }
@ -247,12 +247,15 @@ fn cargo_doc(workspace: &Path, package: Package, chip: Option<Chip>) -> Result<P
Ok(crate::windows_safe_path(&docs_path)) Ok(crate::windows_safe_path(&docs_path))
} }
#[cfg(feature = "deploy-docs")]
fn patch_documentation_index_for_package( fn patch_documentation_index_for_package(
workspace: &Path, workspace: &Path,
package: &Package, package: &Package,
version: &semver::Version, version: &semver::Version,
base_url: &Option<String>, base_url: &Option<String>,
) -> Result<()> { ) -> Result<()> {
use kuchikiki::traits::*;
let package_name = package.to_string().replace('-', "_"); let package_name = package.to_string().replace('-', "_");
let package_path = workspace.join("docs").join(package.to_string()); let package_path = workspace.join("docs").join(package.to_string());
let version_path = package_path.join(version.to_string()); let version_path = package_path.join(version.to_string());
@ -498,7 +501,7 @@ where
let source = fs::read_to_string(resources.join(template)) let source = fs::read_to_string(resources.join(template))
.context(format!("Failed to read {template}"))?; .context(format!("Failed to read {template}"))?;
let mut env = minijinja::Environment::new(); let mut env = minijinja::Environment::empty();
env.add_template(template, &source)?; env.add_template(template, &source)?;
let tmpl = env.get_template(template)?; let tmpl = env.get_template(template)?;