mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-03 15:15:33 +00:00
generate-check-code-prefix: Run rustfmt
automatically; only write if changed (#1282)
This commit is contained in:
parent
1028ed3565
commit
20ac823778
2 changed files with 21 additions and 8 deletions
2
.github/workflows/ci.yaml
vendored
2
.github/workflows/ci.yaml
vendored
|
@ -39,7 +39,7 @@ jobs:
|
||||||
- run: ./target/release/ruff_dev generate-rules-table
|
- run: ./target/release/ruff_dev generate-rules-table
|
||||||
- run: ./target/release/ruff_dev generate-options
|
- run: ./target/release/ruff_dev generate-options
|
||||||
- run: git diff --quiet README.md || echo "::error file=README.md::This file is outdated. You may have to rerun 'cargo dev generate-options' and/or 'cargo dev generate-rules-table'."
|
- run: git diff --quiet README.md || echo "::error file=README.md::This file is outdated. You may have to rerun 'cargo dev generate-options' and/or 'cargo dev generate-rules-table'."
|
||||||
- run: ./target/release/ruff_dev generate-check-code-prefix && cargo fmt -- src/checks_gen.rs
|
- run: ./target/release/ruff_dev generate-check-code-prefix
|
||||||
- run: git diff --quiet src/checks_gen.rs || echo "::error file=src/checks_gen.rs::This file is outdated. You may have to rerun 'cargo dev generate-check-code-prefix'."
|
- run: git diff --quiet src/checks_gen.rs || echo "::error file=src/checks_gen.rs::This file is outdated. You may have to rerun 'cargo dev generate-check-code-prefix'."
|
||||||
- run: git diff --exit-code -- README.md src/checks_gen.rs
|
- run: git diff --exit-code -- README.md src/checks_gen.rs
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
//! Generate the `CheckCodePrefix` enum.
|
//! Generate the `CheckCodePrefix` enum.
|
||||||
|
|
||||||
use std::collections::{BTreeMap, BTreeSet};
|
use std::collections::{BTreeMap, BTreeSet};
|
||||||
use std::fs::OpenOptions;
|
use std::fs;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::process::{Command, Output, Stdio};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::{ensure, Result};
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use codegen::{Scope, Type, Variant};
|
use codegen::{Scope, Type, Variant};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use ruff::checks::{CheckCode, CODE_REDIRECTS, PREFIX_REDIRECTS};
|
use ruff::checks::{CheckCode, CODE_REDIRECTS, PREFIX_REDIRECTS};
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
|
||||||
const FILE: &str = "src/checks_gen.rs";
|
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(author, version, about, long_about = None)]
|
#[command(author, version, about, long_about = None)]
|
||||||
pub struct Cli {
|
pub struct Cli {
|
||||||
|
@ -204,12 +204,25 @@ pub fn main(cli: &Cli) -> Result<()> {
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
|
|
||||||
|
let rustfmt = Command::new("rustfmt")
|
||||||
|
.stdin(Stdio::piped())
|
||||||
|
.stdout(Stdio::piped())
|
||||||
|
.spawn()?;
|
||||||
|
write!(rustfmt.stdin.as_ref().unwrap(), "{output}")?;
|
||||||
|
let Output { status, stdout, .. } = rustfmt.wait_with_output()?;
|
||||||
|
ensure!(status.success(), "rustfmt failed with {status}");
|
||||||
|
|
||||||
// Write the output to `src/checks_gen.rs` (or stdout).
|
// Write the output to `src/checks_gen.rs` (or stdout).
|
||||||
if cli.dry_run {
|
if cli.dry_run {
|
||||||
println!("{output}");
|
println!("{}", String::from_utf8(stdout)?);
|
||||||
} else {
|
} else {
|
||||||
let mut f = OpenOptions::new().write(true).truncate(true).open(FILE)?;
|
let file = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
|
||||||
write!(f, "{output}")?;
|
.parent()
|
||||||
|
.expect("Failed to find root directory")
|
||||||
|
.join("src/checks_gen.rs");
|
||||||
|
if fs::read(&file).map_or(true, |old| old != stdout) {
|
||||||
|
fs::write(&file, stdout)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue