Merge pull request #3518 from mfaerevaag/master

[wd] Update to v0.4.1
This commit is contained in:
Robby Russell 2015-02-22 10:15:08 -08:00
commit be63e8b776
3 changed files with 65 additions and 8 deletions

View file

@ -5,6 +5,8 @@ wd
`wd` (*warp directory*) lets you jump to custom directories in zsh, without using `cd`. Why? Because `cd` seems ineffecient when the folder is frequently visited or has a long path. `wd` (*warp directory*) lets you jump to custom directories in zsh, without using `cd`. Why? Because `cd` seems ineffecient when the folder is frequently visited or has a long path.
*NOTE*: If you are not using zsh, check out the `ruby` branch which has `wd` implemented as a gem.
### Setup ### Setup
@ -33,7 +35,7 @@ Run either in terminal:
* Add `wd` function to `.zshrc` (or `.profile` etc.): * Add `wd` function to `.zshrc` (or `.profile` etc.):
wd() { wd() {
. ~/paht/to/wd/wd.sh . ~/path/to/cloned/repo/wd/wd.sh
} }
* Install manpage. From `wd`'s base directory (requires root permissions): * Install manpage. From `wd`'s base directory (requires root permissions):
@ -84,7 +86,15 @@ Also, you may have to force a rebuild of `zcompdump` by running:
* List all warp points (stored in `~/.warprc`): * List all warp points (stored in `~/.warprc`):
$ wd ls $ wd list
* List files in given warp point:
$ wd ls foo
* Show path of given warp point:
$ wd path foo
* List warp points to current directory, or optionally, path to given warp point: * List warp points to current directory, or optionally, path to given warp point:

View file

@ -20,10 +20,13 @@ function _wd() {
'add:Adds the current working directory to your warp points' 'add:Adds the current working directory to your warp points'
'add!:Overwrites existing warp point' 'add!:Overwrites existing warp point'
'rm:Removes the given warp point' 'rm:Removes the given warp point'
'ls:Outputs all stored warp points' 'list:Outputs all stored warp points'
'show:Outputs all warp points that point to the current directory or shows a specific target directory for a point' 'ls:Show files from given warp point'
'path:Show path to given warp point'
'show:Outputs all warp points that point to the current directory or shows a specific target directory for a point' 'show:Outputs all warp points that point to the current directory or shows a specific target directory for a point'
'help:Show this extremely helpful text' 'help:Show this extremely helpful text'
'clean:Remove points warping to nonexistent directories'
'clean!:Remove nonexistent directories without confirmation'
'..:Go back to last directory' '..:Go back to last directory'
) )
@ -47,6 +50,12 @@ function _wd() {
show) show)
_describe -t points "Warp points" warp_points && ret=0 _describe -t points "Warp points" warp_points && ret=0
;; ;;
ls)
_describe -t points "Warp points" warp_points && ret=0
;;
path)
_describe -t points "Warp points" warp_points && ret=0
;;
esac esac
;; ;;
esac esac

View file

@ -80,7 +80,9 @@ Commands:
rm <point> Removes the given warp point rm <point> Removes the given warp point
show Print warp points to current directory show Print warp points to current directory
show <point> Print path to given warp point show <point> Print path to given warp point
ls Print all stored warp points list Print all stored warp points
ls <point> Show files from given warp point
path <point> Show the path to given warp point
clean! Remove points warping to nonexistent directories clean! Remove points warping to nonexistent directories
-v | --version Print version -v | --version Print version
@ -96,7 +98,7 @@ wd_exit_fail()
{ {
local msg=$1 local msg=$1
wd_print_msg $WD_RED $1 wd_print_msg $WD_RED $msg
WD_EXIT_CODE=1 WD_EXIT_CODE=1
} }
@ -108,6 +110,22 @@ wd_exit_warn()
WD_EXIT_CODE=1 WD_EXIT_CODE=1
} }
wd_getdir()
{
local name_arg=$1
point=$(wd_show $name_arg)
dir=${point:28+$#name_arg+7}
if [[ -z $name_arg ]]; then
wd_exit_fail "You must enter a warp point"
break
elif [[ -z $dir ]]; then
wd_exit_fail "Unknown warp point '${name_arg}'"
break
fi
}
# core # core
wd_warp() wd_warp()
@ -201,6 +219,18 @@ wd_list_all()
done <<< $(sed "s:${HOME}:~:g" $WD_CONFIG) done <<< $(sed "s:${HOME}:~:g" $WD_CONFIG)
} }
wd_ls()
{
wd_getdir $1
ls $dir
}
wd_path()
{
wd_getdir $1
echo $(echo $dir | sed "s:${HOME}:~:g")
}
wd_show() wd_show()
{ {
local name_arg=$1 local name_arg=$1
@ -316,7 +346,7 @@ do
done < $WD_CONFIG done < $WD_CONFIG
# get opts # get opts
args=$(getopt -o a:r:c:lhs -l add:,rm:,clean\!,ls,help,show -- $*) args=$(getopt -o a:r:c:lhs -l add:,rm:,clean\!,list,ls:,path:,help,show -- $*)
# check if no arguments were given, and that version is not set # check if no arguments were given, and that version is not set
if [[ ($? -ne 0 || $#* -eq 0) && -z $wd_print_version ]] if [[ ($? -ne 0 || $#* -eq 0) && -z $wd_print_version ]]
@ -349,10 +379,18 @@ else
wd_remove $2 wd_remove $2
break break
;; ;;
-l|--list|ls) -l|list)
wd_list_all wd_list_all
break break
;; ;;
-ls|ls)
wd_ls $2
break
;;
-p|--path|path)
wd_path $2
break
;;
-h|--help|help) -h|--help|help)
wd_print_usage wd_print_usage
break break