mark: centralize obtaining mark_value from file

This commit is contained in:
Josh Holtrop 2011-04-20 13:50:58 -04:00
parent d544f3dae1
commit 4a7cc6a3be

View File

@ -27,27 +27,27 @@ function mark()
{ {
local MARKS_FILE=${HOME}/.marks local MARKS_FILE=${HOME}/.marks
local param="$1" local param="$1"
local mark_name=""
local mark_value=""
if [[ ! -f ${MARKS_FILE} ]]; then if [[ ! -f ${MARKS_FILE} ]]; then
touch ${MARKS_FILE} touch ${MARKS_FILE}
fi fi
case "$param" in case "$param" in
-g) -g|-s|-d)
local mark_name="$2" mark_name="$2"
local mark_dir=$(grep -i "^$mark_name:" ${MARKS_FILE} | sed -e 's/[^:]*://') mark_value=$(grep -i "^$mark_name:" ${MARKS_FILE} | sed -e 's/[^:]*://')
if [[ "$mark_dir" != "" ]]; then if [[ "$mark_value" == "" ]]; then
cd "$mark_dir"
else
echo "\`$mark_name' is NOT in mark list!" echo "\`$mark_name' is NOT in mark list!"
return
fi fi
;; ;;
esac
case "$param" in
-g)
cd "$mark_value"
;;
-s) -s)
local mark_name="$2" echo "$mark_value"
local mark_dir=$(grep -i "^$mark_name:" ${MARKS_FILE} | sed -e 's/[^:]*://')
if [[ "$mark_dir" != "" ]]; then
echo "$mark_dir"
else
echo "\`$mark_name' is NOT in mark list!"
fi
;; ;;
-h|--help) -h|--help)
echo "mark <name> [<dir>]: mark <dir> (default \$PWD) as <name>" echo "mark <name> [<dir>]: mark <dir> (default \$PWD) as <name>"
@ -60,7 +60,6 @@ function mark()
cat ${MARKS_FILE} cat ${MARKS_FILE}
;; ;;
-d) -d)
local mark_name="$2"
grep -v "^$mark_name:" ${MARKS_FILE} > ${MARKS_FILE}.tmp grep -v "^$mark_name:" ${MARKS_FILE} > ${MARKS_FILE}.tmp
mv ${MARKS_FILE}.tmp ${MARKS_FILE} mv ${MARKS_FILE}.tmp ${MARKS_FILE}
;; ;;
@ -69,13 +68,13 @@ function mark()
;; ;;
*) *)
local mark_name="$1" local mark_name="$1"
local mark_dir="$2" local mark_value="$2"
if [[ "$mark_dir" == "" ]]; then if [[ "$mark_value" == "" ]]; then
mark_dir=`pwd` mark_value=`pwd`
fi fi
grep -v "^$mark_name:" ${MARKS_FILE} > ${MARKS_FILE}.tmp grep -v "^$mark_name:" ${MARKS_FILE} > ${MARKS_FILE}.tmp
mv ${MARKS_FILE}.tmp ${MARKS_FILE} mv ${MARKS_FILE}.tmp ${MARKS_FILE}
echo "$mark_name:$mark_dir" >> ${MARKS_FILE} echo "$mark_name:$mark_value" >> ${MARKS_FILE}
;; ;;
esac esac
} }