Skip to content

Instantly share code, notes, and snippets.

@chadaustin
Created November 21, 2019 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chadaustin/ffdf5e4419a50592e470e9b1633a6da8 to your computer and use it in GitHub Desktop.
Save chadaustin/ffdf5e4419a50592e470e9b1633a6da8 to your computer and use it in GitHub Desktop.
#!/usr/bin/env run-cargo-script
use std::process::Command;
fn main() -> std::io::Result<()> {
let args: Vec<std::ffi::OsString> = std::env::args_os().collect();
if args.len() > 1 {
eprintln!("no arguments allowed");
std::process::exit(1);
}
let mut path = std::env::current_dir()?;
loop {
let mut hg = path.clone();
hg.push(".hg");
if hg.is_dir() {
std::process::exit(
Command::new("hg")
.arg("status")
.spawn()?
.wait()?
.code()
.unwrap(),
);
}
let mut git = path.clone();
git.push(".git");
if git.is_dir() {
std::process::exit(
Command::new("git")
.arg("status")
.spawn()?
.wait()?
.code()
.unwrap(),
);
}
if !path.pop() {
eprintln!("not inside a checkout");
std::process::exit(1);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment