mirror of
https://github.com/storytold/filmcraft.git
synced 2026-10-24 10:10:05 -06:00
xtask: wire cargo xtask version (root() helper, run via $CARGO) so xtask builds again
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b809240d2f
commit
7058004ecf
+13
-1
@@ -430,6 +430,11 @@ fn bench_playback() -> Result<(), String> {
|
||||
run(Command::new(env!("CARGO")).args(["run", "--release", "-p", "filmcraft-ui-egui", "--example", "bench_playback", "--"]).args(&extra))
|
||||
}
|
||||
|
||||
/// The workspace root (the parent of `xtask/`).
|
||||
fn root() -> std::path::PathBuf {
|
||||
std::path::Path::new(env!("CARGO_MANIFEST_DIR")).parent().expect("xtask lives in the workspace").to_path_buf()
|
||||
}
|
||||
|
||||
fn main() -> ExitCode {
|
||||
let task = std::env::args().nth(1).unwrap_or_default();
|
||||
let r = match task.as_str() {
|
||||
@@ -440,11 +445,18 @@ fn main() -> ExitCode {
|
||||
"ci" => ci(),
|
||||
"bench-playback" => bench_playback(),
|
||||
"web" => web(&std::env::args().skip(2).collect::<Vec<_>>()),
|
||||
"version" => {
|
||||
let rest: Vec<String> = std::env::args().skip(2).collect();
|
||||
version::run(&root(), &rest.iter().map(String::as_str).collect::<Vec<_>>())
|
||||
}
|
||||
"ico" => {
|
||||
let rest: Vec<String> = std::env::args().skip(2).collect();
|
||||
ico::run(&rest.iter().map(String::as_str).collect::<Vec<_>>())
|
||||
}
|
||||
_ => Err("usage: cargo xtask <layers|assets|wasm|web [--dev] [--serve PORT]|fixtures [crate…]|ico OUT IN…|ci|bench-playback [args]>".into()),
|
||||
_ => {
|
||||
Err("usage: cargo xtask <layers|assets|wasm|web [--dev] [--serve PORT]|fixtures [crate…]|ico OUT IN…|version [set X.Y.Z]|ci|bench-playback [args]>"
|
||||
.into())
|
||||
}
|
||||
};
|
||||
match r {
|
||||
Ok(()) => ExitCode::SUCCESS,
|
||||
|
||||
@@ -92,12 +92,9 @@ pub fn run(root: &Path, args: &[&str]) -> Result<(), String> {
|
||||
std::fs::write(&tmp, updated).map_err(|e| format!("write {}: {e}", tmp.display()))?;
|
||||
std::fs::rename(&tmp, &path).map_err(|e| format!("replace {}: {e}", path.display()))?;
|
||||
// Refresh the workspace members' entries in Cargo.lock (no dependency upgrades).
|
||||
let mut c = crate::cargo();
|
||||
c.args(["update", "--workspace", "--offline"]);
|
||||
if crate::run(c, "cargo update --workspace --offline").is_err() {
|
||||
let mut c = crate::cargo();
|
||||
c.args(["update", "--workspace"]);
|
||||
crate::run(c, "cargo update --workspace")?;
|
||||
let cargo = std::env::var("CARGO").unwrap_or_else(|_| "cargo".into());
|
||||
if crate::run(std::process::Command::new(&cargo).args(["update", "--workspace", "--offline"])).is_err() {
|
||||
crate::run(std::process::Command::new(&cargo).args(["update", "--workspace"]))?;
|
||||
}
|
||||
println!("version: {old} -> {new}");
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user