feat: add YAZI_LEVEL env variable for shells (#514)

This commit is contained in:
István Donkó 2024-01-15 17:30:43 +01:00 committed by GitHub
parent ca78f4c9b0
commit cb80ca81da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
use std::{ffi::OsString, process::Stdio};
use std::{env, ffi::OsString, process::Stdio};
use anyhow::Result;
use tokio::process::{Child, Command};
@ -29,9 +29,12 @@ impl ShellOpt {
}
pub fn shell(opt: ShellOpt) -> Result<Child> {
let level = env::var("YAZI_LEVEL").ok().and_then(|s| s.parse::<u32>().ok()).unwrap_or(0);
#[cfg(unix)]
return Ok(unsafe {
Command::new("sh")
.env("YAZI_LEVEL", (level + 1).to_string())
.arg("-c")
.stdin(opt.stdio())
.stdout(opt.stdio())
@ -56,6 +59,7 @@ pub fn shell(opt: ShellOpt) -> Result<Child> {
let expanded = parser::parse(opt.cmd.to_string_lossy().as_ref(), &args_);
Ok(
Command::new("cmd")
.env("YAZI_LEVEL", (level + 1).to_string())
.arg("/C")
.args(&expanded)
.stdin(opt.stdio())