summaryrefslogtreecommitdiff
path: root/plugins/wd/wd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/wd/wd.sh')
-rwxr-xr-xplugins/wd/wd.sh46
1 files changed, 42 insertions, 4 deletions
diff --git a/plugins/wd/wd.sh b/plugins/wd/wd.sh
index 5ecbdc503..3b9548168 100755
--- a/plugins/wd/wd.sh
+++ b/plugins/wd/wd.sh
@@ -80,7 +80,9 @@ Commands:
rm <point> Removes the given warp point
show Print warp points to current directory
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
-v | --version Print version
@@ -96,7 +98,7 @@ wd_exit_fail()
{
local msg=$1
- wd_print_msg $WD_RED $1
+ wd_print_msg $WD_RED $msg
WD_EXIT_CODE=1
}
@@ -108,6 +110,22 @@ wd_exit_warn()
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
wd_warp()
@@ -201,6 +219,18 @@ wd_list_all()
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()
{
local name_arg=$1
@@ -316,7 +346,7 @@ do
done < $WD_CONFIG
# 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
if [[ ($? -ne 0 || $#* -eq 0) && -z $wd_print_version ]]
@@ -349,10 +379,18 @@ else
wd_remove $2
break
;;
- -l|--list|ls)
+ -l|list)
wd_list_all
break
;;
+ -ls|ls)
+ wd_ls $2
+ break
+ ;;
+ -p|--path|path)
+ wd_path $2
+ break
+ ;;
-h|--help|help)
wd_print_usage
break