manatsu 0.3.1

CLI tools for Manatsu
Documentation
/// Wrap [std::process::Command], executing `cmd` as the program if the current OS is Windows.
///
/// This is only useful in some very specific cases.
#[macro_export]
macro_rules! win_cmd {
  ($program:literal) => {{
    let mut cmd = match std::env::consts::OS {
      "windows" => std::process::Command::new("cmd"),
      _ => std::process::Command::new($program),
    };

    if std::env::consts::OS == "windows" {
      cmd.arg("/C").arg($program);
    };

    cmd
  }};
}

#[macro_export]
macro_rules! cargo {
  ($( $arg:literal ),*) => {{
    let mut args: Vec<&str> = Vec::new();
    $( args.push($arg); )*

    std::process::Command::new("cargo")
      .args(args)
      .stderr(std::process::Stdio::inherit())
      .stdout(std::process::Stdio::inherit())
      .output()
  }};
  ($args:expr) => {{
    std::process::Command::new("cargo")
      .args($args)
      .stderr(std::process::Stdio::inherit())
      .stdout(std::process::Stdio::inherit())
      .output()
  }};
}

#[macro_export]
macro_rules! pnpm {
  ($( $arg:literal ),*) => {{
    let mut args: Vec<&str> = Vec::new();
    $( args.push($arg); )*

    $crate::win_cmd!("pnpm")
      .args(args)
      .stderr(std::process::Stdio::inherit())
      .stdout(std::process::Stdio::inherit())
      .output()
  }};
  ($args:expr) => {{
    $crate::win_cmd!("pnpm")
      .args($args)
      .stderr(std::process::Stdio::inherit())
      .stdout(std::process::Stdio::inherit())
      .output()
  }};
}