atagen

matrix-rust-sdk

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

Blame: xtask/src/fixup.rs

7ff8adafe9e4atagen2026-10-22 12:30 UTC1
use clap::{Args, Subcommand};
7ff8adafe9e4atagen2026-10-22 12:30 UTC2
use xshell::cmd;
7ff8adafe9e4atagen2026-10-22 12:30 UTC3
7ff8adafe9e4atagen2026-10-22 12:30 UTC4
use crate::{NIGHTLY, Result, sh, workspace};
7ff8adafe9e4atagen2026-10-22 12:30 UTC5
7ff8adafe9e4atagen2026-10-22 12:30 UTC6
#[derive(Args)]
7ff8adafe9e4atagen2026-10-22 12:30 UTC7
pub struct FixupArgs {
7ff8adafe9e4atagen2026-10-22 12:30 UTC8
    #[clap(subcommand)]
7ff8adafe9e4atagen2026-10-22 12:30 UTC9
    cmd: Option<FixupCommand>,
7ff8adafe9e4atagen2026-10-22 12:30 UTC10
}
7ff8adafe9e4atagen2026-10-22 12:30 UTC11
7ff8adafe9e4atagen2026-10-22 12:30 UTC12
#[derive(Subcommand)]
7ff8adafe9e4atagen2026-10-22 12:30 UTC13
enum FixupCommand {
7ff8adafe9e4atagen2026-10-22 12:30 UTC14
    /// Fix style
7ff8adafe9e4atagen2026-10-22 12:30 UTC15
    Style,
7ff8adafe9e4atagen2026-10-22 12:30 UTC16
    /// Fix typos
7ff8adafe9e4atagen2026-10-22 12:30 UTC17
    Typos,
7ff8adafe9e4atagen2026-10-22 12:30 UTC18
    /// Fix clippy lints
7ff8adafe9e4atagen2026-10-22 12:30 UTC19
    Clippy,
7ff8adafe9e4atagen2026-10-22 12:30 UTC20
}
7ff8adafe9e4atagen2026-10-22 12:30 UTC21
7ff8adafe9e4atagen2026-10-22 12:30 UTC22
impl FixupArgs {
7ff8adafe9e4atagen2026-10-22 12:30 UTC23
    pub fn run(self) -> Result<()> {
7ff8adafe9e4atagen2026-10-22 12:30 UTC24
        let sh = sh();
7ff8adafe9e4atagen2026-10-22 12:30 UTC25
        let _p = sh.push_dir(workspace::root_path()?);
7ff8adafe9e4atagen2026-10-22 12:30 UTC26
7ff8adafe9e4atagen2026-10-22 12:30 UTC27
        match self.cmd {
7ff8adafe9e4atagen2026-10-22 12:30 UTC28
            Some(cmd) => match cmd {
7ff8adafe9e4atagen2026-10-22 12:30 UTC29
                FixupCommand::Style => fix_style(),
7ff8adafe9e4atagen2026-10-22 12:30 UTC30
                FixupCommand::Typos => fix_typos(),
7ff8adafe9e4atagen2026-10-22 12:30 UTC31
                FixupCommand::Clippy => fix_clippy(),
7ff8adafe9e4atagen2026-10-22 12:30 UTC32
            },
7ff8adafe9e4atagen2026-10-22 12:30 UTC33
            None => {
7ff8adafe9e4atagen2026-10-22 12:30 UTC34
                fix_style()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC35
                fix_typos()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC36
                fix_clippy()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC37
7ff8adafe9e4atagen2026-10-22 12:30 UTC38
                Ok(())
7ff8adafe9e4atagen2026-10-22 12:30 UTC39
            }
7ff8adafe9e4atagen2026-10-22 12:30 UTC40
        }
7ff8adafe9e4atagen2026-10-22 12:30 UTC41
    }
7ff8adafe9e4atagen2026-10-22 12:30 UTC42
}
7ff8adafe9e4atagen2026-10-22 12:30 UTC43
7ff8adafe9e4atagen2026-10-22 12:30 UTC44
fn fix_style() -> Result<()> {
7ff8adafe9e4atagen2026-10-22 12:30 UTC45
    let sh = sh();
7ff8adafe9e4atagen2026-10-22 12:30 UTC46
    cmd!(sh, "rustup run {NIGHTLY} cargo fmt").run()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC47
    Ok(())
7ff8adafe9e4atagen2026-10-22 12:30 UTC48
}
7ff8adafe9e4atagen2026-10-22 12:30 UTC49
7ff8adafe9e4atagen2026-10-22 12:30 UTC50
fn fix_typos() -> Result<()> {
7ff8adafe9e4atagen2026-10-22 12:30 UTC51
    let sh = sh();
7ff8adafe9e4atagen2026-10-22 12:30 UTC52
    // FIXME: Print install instructions if command-not-found (needs an xshell
7ff8adafe9e4atagen2026-10-22 12:30 UTC53
    //        change: https://github.com/matklad/xshell/issues/46)
7ff8adafe9e4atagen2026-10-22 12:30 UTC54
    cmd!(sh, "typos --write-changes").run()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC55
    Ok(())
7ff8adafe9e4atagen2026-10-22 12:30 UTC56
}
7ff8adafe9e4atagen2026-10-22 12:30 UTC57
7ff8adafe9e4atagen2026-10-22 12:30 UTC58
fn fix_clippy() -> Result<()> {
7ff8adafe9e4atagen2026-10-22 12:30 UTC59
    let sh = sh();
7ff8adafe9e4atagen2026-10-22 12:30 UTC60
    cmd!(
7ff8adafe9e4atagen2026-10-22 12:30 UTC61
        sh,
7ff8adafe9e4atagen2026-10-22 12:30 UTC62
        "rustup run {NIGHTLY} cargo clippy --all-targets
7ff8adafe9e4atagen2026-10-22 12:30 UTC63
        --fix --allow-dirty --allow-staged
7ff8adafe9e4atagen2026-10-22 12:30 UTC64
        -- -D warnings "
7ff8adafe9e4atagen2026-10-22 12:30 UTC65
    )
7ff8adafe9e4atagen2026-10-22 12:30 UTC66
    .run()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC67
    cmd!(
7ff8adafe9e4atagen2026-10-22 12:30 UTC68
        sh,
7ff8adafe9e4atagen2026-10-22 12:30 UTC69
        "rustup run {NIGHTLY} cargo clippy --workspace --all-targets
7ff8adafe9e4atagen2026-10-22 12:30 UTC70
            --fix --allow-dirty --allow-staged
7ff8adafe9e4atagen2026-10-22 12:30 UTC71
            --exclude matrix-sdk-crypto --exclude xtask
7ff8adafe9e4atagen2026-10-22 12:30 UTC72
            --no-default-features --features rustls-tls,sso-login
7ff8adafe9e4atagen2026-10-22 12:30 UTC73
            -- -D warnings"
7ff8adafe9e4atagen2026-10-22 12:30 UTC74
    )
7ff8adafe9e4atagen2026-10-22 12:30 UTC75
    .run()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC76
    cmd!(
7ff8adafe9e4atagen2026-10-22 12:30 UTC77
        sh,
7ff8adafe9e4atagen2026-10-22 12:30 UTC78
        "rustup run {NIGHTLY} cargo clippy --all-targets -p matrix-sdk-crypto
7ff8adafe9e4atagen2026-10-22 12:30 UTC79
            --allow-dirty --allow-staged --fix
7ff8adafe9e4atagen2026-10-22 12:30 UTC80
            --no-default-features -- -D warnings"
7ff8adafe9e4atagen2026-10-22 12:30 UTC81
    )
7ff8adafe9e4atagen2026-10-22 12:30 UTC82
    .run()?;
7ff8adafe9e4atagen2026-10-22 12:30 UTC83
    Ok(())
7ff8adafe9e4atagen2026-10-22 12:30 UTC84
}