From 9e80b4bf5048916d18ca28617391cbacb1f1928b Mon Sep 17 00:00:00 2001 From: sammyette Date: Tue, 11 Jul 2023 13:28:58 -0400 Subject: [PATCH] feat: allow substitution in aliases by numbered args --- aliases.go | 20 ++++++++++++++++++++ main.go | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/aliases.go b/aliases.go index bfacc43..a440f90 100644 --- a/aliases.go +++ b/aliases.go @@ -1,6 +1,8 @@ package main import ( + "regexp" + "strconv" "strings" "sync" @@ -46,9 +48,27 @@ func (a *aliasModule) Resolve(cmdstr string) string { a.mu.RLock() defer a.mu.RUnlock() + arg, _ := regexp.Compile(`[\\]?%\d+`) + args := strings.Split(cmdstr, " ") for a.aliases[args[0]] != "" { alias := a.aliases[args[0]] + alias = arg.ReplaceAllStringFunc(alias, func(a string) string { + if strings.HasPrefix(a, "\\") { + return strings.TrimPrefix(a, "\\") + } + + idx, _ := strconv.Atoi(a[1:]) + if idx > len(args) { + return a + } + val := args[idx] + args = cut(args, idx) + cmdstr = strings.Join(args, " ") + + return val + }) + cmdstr = alias + strings.TrimPrefix(cmdstr, args[0]) cmdArgs, _ := splitInput(cmdstr) args = cmdArgs diff --git a/main.go b/main.go index 300f333..52ba63d 100644 --- a/main.go +++ b/main.go @@ -324,3 +324,7 @@ func getVersion() string { return v.String() } + +func cut(slice []string, idx int) []string { + return append(slice[:idx], slice[idx + 1:]...) +}