From deef7819e9863464365bc251c1070708e0925fc0 Mon Sep 17 00:00:00 2001 From: K900 Date: Wed, 1 Feb 2023 12:15:04 +0300 Subject: feat: use a Rust tool to do the PATH manipulations Overkill? Yes. Fuck bash? Also yes. --- scripts/native-utils/src/split_path.rs | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 scripts/native-utils/src/split_path.rs (limited to 'scripts/native-utils/src/split_path.rs') diff --git a/scripts/native-utils/src/split_path.rs b/scripts/native-utils/src/split_path.rs new file mode 100644 index 0000000..dd10745 --- /dev/null +++ b/scripts/native-utils/src/split_path.rs @@ -0,0 +1,38 @@ +use std::env; + +use clap::Parser; + +#[derive(Parser, Debug)] +struct Args { + #[arg(long)] + automount_root: String, + + #[arg(long)] + include_interop: bool, +} + +fn main() -> anyhow::Result<()> { + let args = Args::parse(); + + let path = env::var("PATH")?; + + let mut native = vec![]; + let mut interop = vec![]; + + for part in path.split(':') { + if part.starts_with(&args.automount_root) { + interop.push(part); + } else { + native.push(part); + } + } + + if args.include_interop { + native.extend(&interop); + }; + + println!("export PATH='{}'", native.join(":")); + println!("export WSLPATH='{}'", interop.join(":")); + + Ok(()) +} -- cgit v1.2.3