aboutsummaryrefslogtreecommitdiff
path: root/xtask/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'xtask/src/lib.rs')
-rw-r--r--xtask/src/lib.rs56
1 files changed, 5 insertions, 51 deletions
diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs
index 807ef587c..e790d995f 100644
--- a/xtask/src/lib.rs
+++ b/xtask/src/lib.rs
@@ -3,14 +3,15 @@
3//! See https://github.com/matklad/cargo-xtask/ 3//! See https://github.com/matklad/cargo-xtask/
4 4
5pub mod not_bash; 5pub mod not_bash;
6pub mod codegen;
7mod ast_src;
8
6pub mod install; 9pub mod install;
7pub mod release; 10pub mod release;
8pub mod dist; 11pub mod dist;
9pub mod pre_commit; 12pub mod pre_commit;
10pub mod metrics; 13pub mod metrics;
11 14pub mod pre_cache;
12pub mod codegen;
13mod ast_src;
14 15
15use std::{ 16use std::{
16 env, 17 env,
@@ -21,7 +22,7 @@ use walkdir::{DirEntry, WalkDir};
21 22
22use crate::{ 23use crate::{
23 codegen::Mode, 24 codegen::Mode,
24 not_bash::{fs2, pushd, pushenv, rm_rf}, 25 not_bash::{pushd, pushenv},
25}; 26};
26 27
27pub use anyhow::{bail, Context as _, Result}; 28pub use anyhow::{bail, Context as _, Result};
@@ -62,17 +63,6 @@ pub fn run_rustfmt(mode: Mode) -> Result<()> {
62 Ok(()) 63 Ok(())
63} 64}
64 65
65fn reformat(text: impl std::fmt::Display) -> Result<String> {
66 let _e = pushenv("RUSTUP_TOOLCHAIN", "stable");
67 ensure_rustfmt()?;
68 let stdout = run!(
69 "rustfmt --config-path {} --config fn_single_line=true", project_root().join("rustfmt.toml").display();
70 <text.to_string().as_bytes()
71 )?;
72 let preamble = "Generated file, do not edit by hand, see `xtask/src/codegen`";
73 Ok(format!("//! {}\n\n{}\n", preamble, stdout))
74}
75
76fn ensure_rustfmt() -> Result<()> { 66fn ensure_rustfmt() -> Result<()> {
77 let out = run!("rustfmt --version")?; 67 let out = run!("rustfmt --version")?;
78 if !out.contains("stable") { 68 if !out.contains("stable") {
@@ -119,42 +109,6 @@ pub fn run_fuzzer() -> Result<()> {
119 Ok(()) 109 Ok(())
120} 110}
121 111
122/// Cleans the `./target` dir after the build such that only
123/// dependencies are cached on CI.
124pub fn run_pre_cache() -> Result<()> {
125 let slow_tests_cookie = Path::new("./target/.slow_tests_cookie");
126 if !slow_tests_cookie.exists() {
127 panic!("slow tests were skipped on CI!")
128 }
129 rm_rf(slow_tests_cookie)?;
130
131 for entry in Path::new("./target/debug").read_dir()? {
132 let entry = entry?;
133 if entry.file_type().map(|it| it.is_file()).ok() == Some(true) {
134 // Can't delete yourself on windows :-(
135 if !entry.path().ends_with("xtask.exe") {
136 rm_rf(&entry.path())?
137 }
138 }
139 }
140
141 fs2::remove_file("./target/.rustc_info.json")?;
142 let to_delete = ["hir", "heavy_test", "xtask", "ide", "rust-analyzer"];
143 for &dir in ["./target/debug/deps", "target/debug/.fingerprint"].iter() {
144 for entry in Path::new(dir).read_dir()? {
145 let entry = entry?;
146 if to_delete.iter().any(|&it| entry.path().display().to_string().contains(it)) {
147 // Can't delete yourself on windows :-(
148 if !entry.path().ends_with("xtask.exe") {
149 rm_rf(&entry.path())?
150 }
151 }
152 }
153 }
154
155 Ok(())
156}
157
158fn is_release_tag(tag: &str) -> bool { 112fn is_release_tag(tag: &str) -> bool {
159 tag.len() == "2020-02-24".len() && tag.starts_with(|c: char| c.is_ascii_digit()) 113 tag.len() == "2020-02-24".len() && tag.starts_with(|c: char| c.is_ascii_digit())
160} 114}