Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions src/commands/alias.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,25 @@ function _zulu_alias_usage() {
# Add an alias
###
function _zulu_alias_add() {
local existing alias cmd
local existing alias cmd flag global

builtin zparseopts -D \
g=global -global=global

alias="$1"
cmd="${(@)@:2}"

existing=$(command cat $aliasfile | command grep "alias $alias=")
existing=$(command cat $aliasfile | command grep -E -e "^alias(\ -g)?\ $alias=")
if [[ $existing != "" ]]; then
builtin echo $(_zulu_color red "Alias '$alias' already exists")
return 1
fi

builtin echo "alias $alias='$cmd'" >> $aliasfile
if [[ -n $global ]]; then
flag=' -g'
fi

builtin echo "alias$flag $alias='$cmd'" >> $aliasfile

zulu alias load
builtin echo "$(_zulu_color green '✔') Alias '$alias' added"
Expand All @@ -40,13 +47,13 @@ function _zulu_alias_rm() {

alias="$1"

existing=$(command cat $aliasfile | command grep "alias $alias=")
if [[ $existing = "" ]]; then
existing=$(command cat $aliasfile | command grep -E -e "^alias(\ -g)?\ $alias=")
if [[ -z $existing ]]; then
builtin echo $(_zulu_color red "Alias '$alias' does not exist")
return 1
fi

builtin echo "$(command cat $aliasfile | command grep -v "alias $alias=")" >! $aliasfile
builtin echo "$(command cat $aliasfile | command grep -E -ve "^alias(\ -g)?\ $alias=")" >! $aliasfile
unalias $alias

zulu alias load
Expand Down
45 changes: 43 additions & 2 deletions tests/commands/alias.zunit
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
assert $state equals 0
assert "$output" same_as "\033[0;32m✔\033[0;m Alias 'an_alias' added"

run grep -E '^alias an_alias=' tests/_support/.config/zulu/alias
run grep -E -e '^alias an_alias=' tests/_support/.config/zulu/alias

assert $state equals 0
assert "$output" same_as "alias an_alias='echo \"It worked\"'"
Expand All @@ -21,8 +21,49 @@
assert "$output" same_as "\033[0;32m✔\033[0;m Alias 'an_alias' removed"

local -a output
run grep -E '^alias an_alias=' tests/_support/.config/zulu/alias
run grep -E -e '^alias an_alias=' tests/_support/.config/zulu/alias

assert $state equals 1
assert "$output" is_empty
}

@test 'Test "zulu alias add -g" creates a global alias' {
run zulu alias add -g a_global_alias ' | cat -vte'

assert $state equals 0
assert "$output" same_as "\033[0;32m✔\033[0;m Alias 'a_global_alias' added"

run grep -E -e '^alias -g a_global_alias=' tests/_support/.config/zulu/alias

assert $state equals 0
assert "$output" same_as "alias -g a_global_alias=' | cat -vte'"
}

@test 'Test "zulu alias rm" removes a global alias' {
zulu alias load

run zulu alias rm 'a_global_alias'

assert $state equals 0
assert "$output" same_as "\033[0;32m✔\033[0;m Alias 'a_global_alias' removed"

local -a output
run grep -E -e '^alias -g a_global_alias=' tests/_support/.config/zulu/alias

assert $state equals 1
assert "$output" is_empty
}

@test 'Test "zulu alias add" does not allow overlapping standard and global aliases' {
run zulu alias add a_new_alias 'echo "It worked"'

assert $state equals 0
assert "$output" same_as "\033[0;32m✔\033[0;m Alias 'a_new_alias' added"

zulu alias load

run zulu alias add -g a_new_alias ' | cat -vte'

assert $state equals 1
assert "$output" same_as "\033[0;31mAlias 'a_new_alias' already exists\033[0;m"
}