Rustify clean_all.sh
This commit is contained in:
parent
05ef68961b
commit
e26e074261
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -103,7 +103,7 @@ jobs:
|
||||
./y.sh build --features master
|
||||
# TODO: remove --features master when it is back to the default.
|
||||
cargo test --features master
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/gcc12.yml
vendored
2
.github/workflows/gcc12.yml
vendored
@ -86,7 +86,7 @@ jobs:
|
||||
./y.sh prepare --only-libcore --libgccjit12-patches
|
||||
./y.sh build --no-default-features --sysroot-panic-abort
|
||||
cargo test --no-default-features
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/m68k.yml
vendored
2
.github/workflows/m68k.yml
vendored
@ -118,7 +118,7 @@ jobs:
|
||||
./y.sh build --target-triple m68k-unknown-linux-gnu --features master
|
||||
# TODO: remove --features master when it is back to the default.
|
||||
CG_GCC_TEST_TARGET=m68k-unknown-linux-gnu cargo test --features master
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@ -82,7 +82,7 @@ jobs:
|
||||
EMBED_LTO_BITCODE=1 ./y.sh build --release --release-sysroot --features master
|
||||
# TODO: remove --features master when it is back to the default.
|
||||
cargo test --features master
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/stdarch.yml
vendored
2
.github/workflows/stdarch.yml
vendored
@ -100,7 +100,7 @@ jobs:
|
||||
- name: Clean
|
||||
if: ${{ !matrix.cargo_runner }}
|
||||
run: |
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
73
build_system/src/clean.rs
Normal file
73
build_system/src/clean.rs
Normal file
@ -0,0 +1,73 @@
|
||||
use crate::utils::remove_file;
|
||||
|
||||
use std::fs::remove_dir_all;
|
||||
|
||||
#[derive(Default)]
|
||||
struct CleanArg {
|
||||
all: bool,
|
||||
}
|
||||
|
||||
impl CleanArg {
|
||||
fn new() -> Result<Option<Self>, String> {
|
||||
let mut args = CleanArg::default();
|
||||
|
||||
// We skip the binary and the "clean" option.
|
||||
for arg in std::env::args().skip(2) {
|
||||
match arg.as_str() {
|
||||
"all" => args.all = true,
|
||||
"--help" => {
|
||||
Self::usage();
|
||||
return Ok(None);
|
||||
}
|
||||
a => return Err(format!("Unknown argument `{}`", a)),
|
||||
}
|
||||
}
|
||||
Ok(Some(args))
|
||||
}
|
||||
|
||||
fn usage() {
|
||||
println!(
|
||||
r#"
|
||||
`clean` command help:
|
||||
|
||||
all : Clean all data
|
||||
--help : Show this help
|
||||
"#
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn clean_all() -> Result<(), String> {
|
||||
let dirs_to_remove = [
|
||||
"target",
|
||||
"build_sysroot/sysroot",
|
||||
"build_sysroot/sysroot_src",
|
||||
"build_sysroot/target",
|
||||
"regex",
|
||||
"simple-raytracer",
|
||||
];
|
||||
for dir in dirs_to_remove {
|
||||
let _ = remove_dir_all(dir);
|
||||
}
|
||||
|
||||
let files_to_remove = ["build_sysroot/Cargo.lock", "perf.data", "perf.data.old"];
|
||||
|
||||
for file in files_to_remove {
|
||||
let _ = remove_file(file);
|
||||
}
|
||||
|
||||
println!("Successfully ran `clean all`");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn run() -> Result<(), String> {
|
||||
let args = match CleanArg::new()? {
|
||||
Some(a) => a,
|
||||
None => return Ok(()),
|
||||
};
|
||||
|
||||
if args.all {
|
||||
clean_all()?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
use std::process;
|
||||
|
||||
mod build;
|
||||
mod clean;
|
||||
mod config;
|
||||
mod prepare;
|
||||
mod rustc_info;
|
||||
@ -22,6 +23,7 @@ fn usage() {
|
||||
"\
|
||||
Available commands for build_system:
|
||||
|
||||
clean : Run clean command
|
||||
prepare : Run prepare command
|
||||
build : Run build command
|
||||
test : Run test command
|
||||
@ -30,6 +32,7 @@ fn usage() {
|
||||
}
|
||||
|
||||
pub enum Command {
|
||||
Clean,
|
||||
Prepare,
|
||||
Build,
|
||||
Test,
|
||||
@ -41,6 +44,7 @@ fn main() {
|
||||
}
|
||||
|
||||
let command = match env::args().nth(1).as_deref() {
|
||||
Some("clean") => Command::Clean,
|
||||
Some("prepare") => Command::Prepare,
|
||||
Some("build") => Command::Build,
|
||||
Some("test") => Command::Test,
|
||||
@ -57,6 +61,7 @@ fn main() {
|
||||
};
|
||||
|
||||
if let Err(e) = match command {
|
||||
Command::Clean => clean::run(),
|
||||
Command::Prepare => prepare::run(),
|
||||
Command::Build => build::run(),
|
||||
Command::Test => test::run(),
|
||||
|
@ -346,7 +346,7 @@ pub fn split_args(args: &str) -> Result<Vec<String>, String> {
|
||||
Ok(out)
|
||||
}
|
||||
|
||||
pub fn remove_file<P: AsRef<Path>>(file_path: &P) -> Result<(), String> {
|
||||
pub fn remove_file<P: AsRef<Path> + ?Sized>(file_path: &P) -> Result<(), String> {
|
||||
std::fs::remove_file(file_path).map_err(|error| {
|
||||
format!(
|
||||
"Failed to remove `{}`: {:?}",
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -v
|
||||
|
||||
rm -rf target/ build_sysroot/{sysroot/,sysroot_src/,target/,Cargo.lock} perf.data{,.old}
|
||||
rm -rf regex/ simple-raytracer/
|
Loading…
Reference in New Issue
Block a user