mirror of
https://github.com/iridakos/goto.git
synced 2025-05-16 23:40:16 -07:00
Merge pull request #17 from shawalli/feature/push_pop_commands
Add Push/Pop Commands
This commit is contained in:
commit
2db8b0bf1f
23
README.md
23
README.md
@ -53,11 +53,34 @@ To change to an aliased directory, type:
|
||||
goto <alias>
|
||||
```
|
||||
|
||||
To first push the current directory onto the directory stack before changing directories, type:
|
||||
```bash
|
||||
goto -p <alias>
|
||||
```
|
||||
or
|
||||
```bash
|
||||
goto --push <alias>
|
||||
```
|
||||
|
||||
#### Example:
|
||||
```bash
|
||||
goto dev
|
||||
```
|
||||
|
||||
### Revert to a pushed directory
|
||||
To return to a pushed directory, type:
|
||||
```bash
|
||||
goto -o
|
||||
```
|
||||
or
|
||||
```bash
|
||||
goto --pop
|
||||
```
|
||||
|
||||
#### Notes
|
||||
|
||||
This command is equivalent to `popd`, but within the `goto` command.
|
||||
|
||||
### Register an alias
|
||||
To register a directory alias, type:
|
||||
```bash
|
||||
|
34
goto.sh
34
goto.sh
@ -47,6 +47,12 @@ goto()
|
||||
-u|--unregister) # Unregister an alias
|
||||
_goto_unregister_alias "$@"
|
||||
;;
|
||||
-p|--push) # Push the current directory onto the pushd stack, then goto
|
||||
_goto_directory_push "$@"
|
||||
;;
|
||||
-o|--pop) # Pop the top directory off of the pushd stack, then change that directory
|
||||
_goto_directory_pop
|
||||
;;
|
||||
-l|--list)
|
||||
_goto_list_aliases
|
||||
;;
|
||||
@ -84,6 +90,10 @@ OPTIONS:
|
||||
goto -r|--register <alias> <directory>
|
||||
-u, --unregister: unregisters an alias
|
||||
goto -u|--unregister <alias>
|
||||
-p, --push: pushes the current directory onto the stack, then performs goto
|
||||
goto -p|--push <alias>
|
||||
-o, --pop: pops the top directory from the stack, then changes to that directory
|
||||
goto -o|--pop
|
||||
-l, --list: lists aliases
|
||||
goto -l|--list
|
||||
-x, --expand: expands an alias
|
||||
@ -210,6 +220,25 @@ _goto_unregister_alias()
|
||||
echo "Alias '$1' unregistered successfully."
|
||||
}
|
||||
|
||||
# Pushes the current directory onto the stack, then goto
|
||||
function _goto_directory_push()
|
||||
{
|
||||
if [ "$#" -ne "1" ]; then
|
||||
_goto_error "usage: goto -p|--push <alias>"
|
||||
return
|
||||
fi
|
||||
|
||||
pushd . 2>&1 1>/dev/null
|
||||
|
||||
_goto_directory $@
|
||||
}
|
||||
|
||||
# Pops the top directory from the stack, then goto
|
||||
function _goto_directory_pop()
|
||||
{
|
||||
popd 2>&1 1>/dev/null
|
||||
}
|
||||
|
||||
# Unregisters aliases whose directories no longer exist.
|
||||
_goto_cleanup()
|
||||
{
|
||||
@ -292,7 +321,7 @@ _complete_goto_commands()
|
||||
local IFS=$' \t\n'
|
||||
|
||||
# shellcheck disable=SC2207
|
||||
COMPREPLY=($(compgen -W "-r --register -u --unregister -l --list -x --expand -c --cleanup -v --version" -- "$1"))
|
||||
COMPREPLY=($(compgen -W "-r --register -u --unregister -p --push -o --pop -l --list -x --expand -c --cleanup -v --version" -- "$1"))
|
||||
}
|
||||
|
||||
# Completes the goto function with the available aliases
|
||||
@ -350,6 +379,9 @@ _complete_goto_bash()
|
||||
elif [[ $prev = "-x" ]] || [[ $prev = "--expand" ]]; then
|
||||
# prompt with aliases if user tries to expand one
|
||||
_complete_goto_aliases "$cur"
|
||||
elif [[ $prev = "-p" ]] || [[ $prev = "--push" ]]; then
|
||||
# prompt with aliases only if user tries to push
|
||||
_complete_goto_aliases "$cur"
|
||||
fi
|
||||
elif [ "$COMP_CWORD" -eq "3" ]; then
|
||||
# if we are on the third argument
|
||||
|
Loading…
x
Reference in New Issue
Block a user