atagen

matrix-rust-sdk

public
Star0
Watch0
ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk.git

Blame: xtask/src/workspace.rs

7ff8adafe9e4atagen2026-10-22 12:30 UTC1
use std::env;
7ff8adafe9e4atagen2026-10-22 12:30 UTC2
7ff8adafe9e4atagen2026-10-22 12:30 UTC3
use camino::Utf8PathBuf;
7ff8adafe9e4atagen2026-10-22 12:30 UTC4
use serde::Deserialize;
7ff8adafe9e4atagen2026-10-22 12:30 UTC5
use xshell::cmd;
7ff8adafe9e4atagen2026-10-22 12:30 UTC6
7ff8adafe9e4atagen2026-10-22 12:30 UTC7
use crate::{Result, sh};
7ff8adafe9e4atagen2026-10-22 12:30 UTC8
7ff8adafe9e4atagen2026-10-22 12:30 UTC9
pub fn root_path() -> Result<Utf8PathBuf> {
7ff8adafe9e4atagen2026-10-22 12:30 UTC10
    #[derive(Deserialize)]
7ff8adafe9e4atagen2026-10-22 12:30 UTC11
    struct Metadata {
7ff8adafe9e4atagen2026-10-22 12:30 UTC12
        workspace_root: Utf8PathBuf,
7ff8adafe9e4atagen2026-10-22 12:30 UTC13
    }
7ff8adafe9e4atagen2026-10-22 12:30 UTC14
7ff8adafe9e4atagen2026-10-22 12:30 UTC15
    let cargo = env::var("CARGO").unwrap_or_else(|_| "cargo".to_owned());
7ff8adafe9e4atagen2026-10-22 12:30 UTC16
    let sh = sh();
7ff8adafe9e4atagen2026-10-22 12:30 UTC17
    let metadata_json = cmd!(sh, "{cargo} metadata --no-deps --format-version 1").read()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC18
    Ok(serde_json::from_str::<Metadata>(&metadata_json)?.workspace_root)
7ff8adafe9e4atagen2026-10-22 12:30 UTC19
}
7ff8adafe9e4atagen2026-10-22 12:30 UTC20
7ff8adafe9e4atagen2026-10-22 12:30 UTC21
pub fn target_path() -> Result<Utf8PathBuf> {
7ff8adafe9e4atagen2026-10-22 12:30 UTC22
    #[derive(Deserialize)]
7ff8adafe9e4atagen2026-10-22 12:30 UTC23
    struct Metadata {
7ff8adafe9e4atagen2026-10-22 12:30 UTC24
        target_directory: Utf8PathBuf,
7ff8adafe9e4atagen2026-10-22 12:30 UTC25
    }
7ff8adafe9e4atagen2026-10-22 12:30 UTC26
7ff8adafe9e4atagen2026-10-22 12:30 UTC27
    let cargo = env::var("CARGO").unwrap_or_else(|_| "cargo".to_owned());
7ff8adafe9e4atagen2026-10-22 12:30 UTC28
    let sh = sh();
7ff8adafe9e4atagen2026-10-22 12:30 UTC29
    let metadata_json = cmd!(sh, "{cargo} metadata --no-deps --format-version 1").read()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC30
    Ok(serde_json::from_str::<Metadata>(&metadata_json)?.target_directory)
7ff8adafe9e4atagen2026-10-22 12:30 UTC31
}