winure/path-convert/src/main.rs

40 lines
724 B
Rust
Raw Normal View History

2024-05-30 10:13:37 -04:00
use std::path::Path;
use pico_args::Arguments;
const DRIVE: &str = "/mnt/c/";
pub fn main() {
let mut args = Arguments::from_env();
loop {
let next = args.subcommand().unwrap();
2024-05-30 10:13:37 -04:00
if let Some(arg) = next {
let mut output: String;
2024-05-30 15:44:02 -04:00
// canonicalize; windows doesn't recognize symlinks
2024-05-30 10:13:37 -04:00
let path = Path::new(&arg).canonicalize();
if let Ok(target) = path {
output = target.to_string_lossy().to_string();
} else {
output = arg;
}
2024-05-30 10:13:37 -04:00
2024-05-30 15:44:02 -04:00
// simple C-drive substitution
2024-05-30 10:13:37 -04:00
if output.starts_with(DRIVE) {
output = output.replace(DRIVE, "C:\\");
}
2024-05-30 15:44:02 -04:00
// switch out separators
2024-05-30 10:13:37 -04:00
output = output.replace("/", "\\");
2024-05-30 15:44:02 -04:00
// emit to stdout
2024-05-30 10:13:37 -04:00
println!("{output}");
} else {
break;
}
}
}