diff options
| author | Jonas Maier <> | 2026-05-22 15:19:41 +0200 |
|---|---|---|
| committer | Jonas Maier <> | 2026-05-22 15:19:41 +0200 |
| commit | 1a71e4e0748f0de1281bb280a745f4d2a9b13aa4 (patch) | |
| tree | 66977a55856c1801f96dc5963bfff0c0247fa495 /src/run/builtin.rs | |
| parent | 2acae17fc235dce288c186d04b4f0750bdecc198 (diff) | |
| download | pish-1a71e4e0748f0de1281bb280a745f4d2a9b13aa4.tar.gz | |
type builtin: displays alias definition now
Diffstat (limited to 'src/run/builtin.rs')
| -rw-r--r-- | src/run/builtin.rs | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs index d00c140..335d07d 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -7,7 +7,7 @@ use pish_derive::FromArgs; use super::{Builtin, BuiltinError as Error, BuiltinResult as Result}; use crate::parse::CmdDisplay; -use crate::run::AliasAge; +use crate::run::{AliasAge, AliasBody}; use crate::*; #[allow(unused)] @@ -187,9 +187,11 @@ impl Builtin for _type { ) -> Result { let session = session.lock().unwrap(); for arg in args { - if session.aliases.get(arg, AliasAge::MAX).is_some() { - // TODO: tell what it is aliased to - writeln!(stdout, "{} is an alias", String::from_utf8_lossy(arg))?; + if let Some((_, a)) = session.aliases.get(arg, AliasAge::MAX) { + stdout.write_all(&arg)?; + stdout.write_all(b" is aliased to ")?; + stdout.write_all(&a.unparsed)?; + stdout.write_all(b"\n")?; continue; } @@ -496,11 +498,19 @@ impl Builtin for alias { return Err(Error::Exit(-1)); } - session - .lock() - .unwrap() - .aliases - .insert(alias_name.clone(), alias_args); + session.lock().unwrap().aliases.insert( + alias_name.clone(), + AliasBody { + unparsed: args.iter().fold(BString::new(), |mut a, b| { + if !a.is_empty() { + a.push(b' '); + } + a.push_all(&b); + a + }), + parsed: alias_args, + }, + ); Ok(()) } |
