Skip to content

Commit 0f6f458

Browse files
committed
Make working with codegen less annoying
We probably should look into removing `xtask codegen` altogether. The test workflow works perfectly for package.json config. There are two things preventing that: * Lint completions are generated on demand. * Docs are not committed to the repository.
1 parent 071dde1 commit 0f6f458

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

xtask/src/codegen.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ pub(crate) use self::{
3232
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
3333
pub(crate) enum Mode {
3434
Overwrite,
35-
Verify,
35+
Ensure,
3636
}
3737

3838
impl flags::Codegen {
@@ -59,12 +59,19 @@ fn update(path: &Path, contents: &str, mode: Mode) -> Result<()> {
5959
}
6060
_ => (),
6161
}
62-
if mode == Mode::Verify {
63-
anyhow::bail!("`{}` is not up-to-date", path.display());
64-
}
62+
let return_error = match mode {
63+
Mode::Overwrite => false,
64+
Mode::Ensure => true,
65+
};
6566
eprintln!("updating {}", path.display());
6667
write_file(path, contents)?;
67-
return Ok(());
68+
69+
return if return_error {
70+
let path = path.strip_prefix(&project_root()).unwrap_or(path);
71+
anyhow::bail!("`{}` was not up-to-date, updating", path.display());
72+
} else {
73+
Ok(())
74+
};
6875

6976
fn normalize(s: &str) -> String {
7077
s.replace("\r\n", "\n")

xtask/src/main.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,16 @@ fn run_rustfmt(mode: Mode) -> Result<()> {
8989
let _dir = pushd(project_root())?;
9090
let _e = pushenv("RUSTUP_TOOLCHAIN", "stable");
9191
ensure_rustfmt()?;
92-
let check = match mode {
93-
Mode::Overwrite => &[][..],
94-
Mode::Verify => &["--", "--check"],
92+
match mode {
93+
Mode::Overwrite => cmd!("cargo fmt").run()?,
94+
Mode::Ensure => {
95+
let res = cmd!("cargo fmt -- --check").run();
96+
if !res.is_ok() {
97+
let _ = cmd!("cargo fmt").run();
98+
}
99+
res?;
100+
}
95101
};
96-
cmd!("cargo fmt {check...}").run()?;
97102
Ok(())
98103
}
99104

xtask/src/tidy.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,22 @@ use crate::{
1313

1414
#[test]
1515
fn generated_grammar_is_fresh() {
16-
if let Err(error) = codegen::generate_syntax(Mode::Verify) {
17-
panic!("{}. Please update it by running `cargo xtask codegen`", error);
18-
}
16+
codegen::generate_syntax(Mode::Ensure).unwrap()
1917
}
2018

2119
#[test]
2220
fn generated_tests_are_fresh() {
23-
if let Err(error) = codegen::generate_parser_tests(Mode::Verify) {
24-
panic!("{}. Please update tests by running `cargo xtask codegen`", error);
25-
}
21+
codegen::generate_parser_tests(Mode::Ensure).unwrap()
2622
}
2723

2824
#[test]
2925
fn generated_assists_are_fresh() {
30-
if let Err(error) = codegen::generate_assists_tests(Mode::Verify) {
31-
panic!("{}. Please update assists by running `cargo xtask codegen`", error);
32-
}
26+
codegen::generate_assists_tests(Mode::Ensure).unwrap();
3327
}
3428

3529
#[test]
3630
fn check_code_formatting() {
37-
if let Err(error) = run_rustfmt(Mode::Verify) {
38-
panic!("{}. Please format the code by running `cargo format`", error);
39-
}
31+
run_rustfmt(Mode::Ensure).unwrap()
4032
}
4133

4234
#[test]

0 commit comments

Comments
 (0)