Compare commits

...

4 Commits

Author SHA1 Message Date
sammyette a5205dc24b
Merge 726082ba03 into 4fcd310048 2023-09-12 14:32:20 -06:00
sammyette 4fcd310048
chore: merge from upstream 2023-09-09 13:53:22 -04:00
sammyette db8e87e5dd
fix: compare lower case strings in contains function
this fixes file completion on windows.
2023-09-09 13:53:09 -04:00
sammyette ba04fb2af7
feat: allow numbered substitutions in aliases (#258) 2023-09-09 13:51:58 -04:00
3 changed files with 29 additions and 2 deletions

View File

@ -12,6 +12,9 @@
- `hilbish.notification` signal when a message/notification is sent - `hilbish.notification` signal when a message/notification is sent
- `notifyJobFinish` opt to send a notification when background jobs are - `notifyJobFinish` opt to send a notification when background jobs are
completed. completed.
- Allow numbered arg substitutions in aliases.
- Example: `hilbish.alias('hello', 'echo %1 says hello')` allows the user to run `hello hilbish`
which will output `hilbish says hello`.
[#219]: https://github.com/Rosettea/Hilbish/issues/219 [#219]: https://github.com/Rosettea/Hilbish/issues/219
### Fixed ### Fixed

View File

@ -1,6 +1,8 @@
package main package main
import ( import (
"regexp"
"strconv"
"strings" "strings"
"sync" "sync"
@ -46,9 +48,27 @@ func (a *aliasModule) Resolve(cmdstr string) string {
a.mu.RLock() a.mu.RLock()
defer a.mu.RUnlock() defer a.mu.RUnlock()
args := strings.Split(cmdstr, " ") arg, _ := regexp.Compile(`[\\]?%\d+`)
args, _ := splitInput(cmdstr)
for a.aliases[args[0]] != "" { for a.aliases[args[0]] != "" {
alias := a.aliases[args[0]] alias := a.aliases[args[0]]
alias = arg.ReplaceAllStringFunc(alias, func(a string) string {
idx, _ := strconv.Atoi(a[1:])
if strings.HasPrefix(a, "\\") || idx == 0 {
return strings.TrimPrefix(a, "\\")
}
if idx + 1 > len(args) {
return a
}
val := args[idx]
args = cut(args, idx)
cmdstr = strings.Join(args, " ")
return val
})
cmdstr = alias + strings.TrimPrefix(cmdstr, args[0]) cmdstr = alias + strings.TrimPrefix(cmdstr, args[0])
cmdArgs, _ := splitInput(cmdstr) cmdArgs, _ := splitInput(cmdstr)
args = cmdArgs args = cmdArgs

View File

@ -289,7 +289,7 @@ func removeDupes(slice []string) []string {
func contains(s []string, e string) bool { func contains(s []string, e string) bool {
for _, a := range s { for _, a := range s {
if a == e { if strings.ToLower(a) == strings.ToLower(e) {
return true return true
} }
} }
@ -324,3 +324,7 @@ func getVersion() string {
return v.String() return v.String()
} }
func cut(slice []string, idx int) []string {
return append(slice[:idx], slice[idx + 1:]...)
}