summaryrefslogtreecommitdiff
path: root/scripts/native-utils/src/split_path.rs
diff options
context:
space:
mode:
authorK900 <me@0upti.me>2023-02-01 12:15:04 +0300
committerK900 <me@0upti.me>2023-02-01 15:47:19 +0300
commitdeef7819e9863464365bc251c1070708e0925fc0 (patch)
tree253d10ccb9177bcbd723b06082ad73150e8d1d7f /scripts/native-utils/src/split_path.rs
parent0487b4de4abc076d36325684226ea3bb312b88f8 (diff)
feat: use a Rust tool to do the PATH manipulations
Overkill? Yes. Fuck bash? Also yes.
Diffstat (limited to 'scripts/native-utils/src/split_path.rs')
-rw-r--r--scripts/native-utils/src/split_path.rs38
1 files changed, 38 insertions, 0 deletions
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(())
+}