one_command/
blocking.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use std::ffi::OsStr;
#[cfg(windows)]
use std::os::windows::process::CommandExt;

#[cfg(windows)]
const CREATE_NO_WINDOW: u32 = 0x08000000;

/// Execute commands on the Windows platform,
/// without opening a window to maintain consistency with other system behaviors.
pub struct Command;

impl Command {
    #[allow(clippy::new_ret_no_self)]
    pub fn new<S: AsRef<OsStr>>(program: S) -> std::process::Command {
        #[cfg(windows)]
        let inner = {
            let mut inner = std::process::Command::new(program);
            inner.creation_flags(CREATE_NO_WINDOW);
            inner
        };
        #[cfg(not(windows))]
        let inner = std::process::Command::new(program);

        inner
    }
}