diff options
| author | ozkanonur <work@onurozkan.dev> | 2023-05-30 10:53:46 +0300 |
|---|---|---|
| committer | ozkanonur <work@onurozkan.dev> | 2023-05-30 10:53:46 +0300 |
| commit | 2803c66006b37a12c16e15cdb9873565f4c585d2 (patch) | |
| tree | 91e637d6c2e5a7929c393453dd47ecd7258e4432 /src/tools | |
| parent | 7105f2ea7397c86a70ffa73bf663001e3048c94c (diff) | |
create `build_helper/src/util` mod
Signed-off-by: ozkanonur <work@onurozkan.dev>
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/build_helper/src/lib.rs | 1 | ||||
| -rw-r--r-- | src/tools/build_helper/src/util.rs | 41 |
2 files changed, 42 insertions, 0 deletions
diff --git a/src/tools/build_helper/src/lib.rs b/src/tools/build_helper/src/lib.rs index d3d2323db85..3fa970373b3 100644 --- a/src/tools/build_helper/src/lib.rs +++ b/src/tools/build_helper/src/lib.rs @@ -1,2 +1,3 @@ pub mod ci; pub mod git; +pub mod util; diff --git a/src/tools/build_helper/src/util.rs b/src/tools/build_helper/src/util.rs new file mode 100644 index 00000000000..731095023a9 --- /dev/null +++ b/src/tools/build_helper/src/util.rs @@ -0,0 +1,41 @@ +use std::process::Command; + +/// Invokes `build_helper::util::detail_exit` with `cfg!(test)` +#[macro_export] +macro_rules! detail_exit_macro { + ($code:expr) => { + build_helper::util::detail_exit($code, cfg!(test)); + }; +} + +/// If code is not 0 (successful exit status), exit status is 101 (rust's default error code.) +/// If `is_test` true and code is an error code, it will cause a panic. +pub fn detail_exit(code: i32, is_test: bool) -> ! { + // if in test and code is an error code, panic with status code provided + if is_test { + panic!("status code: {}", code); + } else { + // otherwise,exit with provided status code + std::process::exit(code); + } +} + +pub fn fail(s: &str) -> ! { + eprintln!("\n\n{}\n\n", s); + detail_exit(1, cfg!(test)); +} + +pub fn try_run(cmd: &mut Command, print_cmd_on_fail: bool) -> bool { + let status = match cmd.status() { + Ok(status) => status, + Err(e) => fail(&format!("failed to execute command: {:?}\nerror: {}", cmd, e)), + }; + if !status.success() && print_cmd_on_fail { + println!( + "\n\ncommand did not execute successfully: {:?}\n\ + expected success, got: {}\n\n", + cmd, status + ); + } + status.success() +} |
