dos-var: initial implementation
This commit is contained in:
parent
5bdeabbe76
commit
2b416b6b2f
4 changed files with 58 additions and 0 deletions
2
dos-var/.gitignore
vendored
Normal file
2
dos-var/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/target
|
||||||
|
Cargo.lock
|
6
dos-var/Cargo.toml
Normal file
6
dos-var/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "dos-var"
|
||||||
|
version = "0.0.1"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
13
dos-var/src/error.rs
Normal file
13
dos-var/src/error.rs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
use std::process::exit;
|
||||||
|
|
||||||
|
pub fn not_found(target: &String) {
|
||||||
|
eprintln!("dos-var: %{target}% has no value");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn arg_count() {
|
||||||
|
eprintln!("dos-var: expects one argument");
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
|
37
dos-var/src/main.rs
Normal file
37
dos-var/src/main.rs
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
use std::{
|
||||||
|
env::args,
|
||||||
|
process::{
|
||||||
|
Command,
|
||||||
|
Stdio
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mod error;
|
||||||
|
|
||||||
|
const CMD: &str = "/mnt/c/Windows/System32/cmd.exe";
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
let args: Vec<String> = args().collect();
|
||||||
|
if args.len() != 2 { error::arg_count(); }
|
||||||
|
let target = &args[1];
|
||||||
|
|
||||||
|
let cmd = Command::new(CMD)
|
||||||
|
.current_dir("/mnt/c/")
|
||||||
|
.arg( format!("/C echo %{target}%") )
|
||||||
|
.output();
|
||||||
|
if let Ok(output) = cmd {
|
||||||
|
if let Ok(stdout) = String::from_utf8(output.stdout) {
|
||||||
|
// trim output
|
||||||
|
let stdout = stdout.trim_end_matches("\"\r\n");
|
||||||
|
// catch empty variable case
|
||||||
|
if stdout == format!("%{target}%") { error::not_found(&target); }
|
||||||
|
|
||||||
|
// convert and write
|
||||||
|
let path = stdout
|
||||||
|
.replace("\\", "/")
|
||||||
|
.replace("C:/", "/mnt/c/");
|
||||||
|
println!("{path}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue