oh-my-zsh/plugins/org-mode-manager/orgnotes.sh

114 lines
2.5 KiB
Bash
Raw Normal View History

2017-08-27 01:57:08 +00:00
#!/bin/bash
2017-08-29 02:06:13 +00:00
__cleanup_org(){
local file=$1
local dir=$2
[ "$file" = "" ] || [ "$dir" = "" ] && echo "nothing to clean up." && return 0
rm `dirname ${file}`/\#`basename ${file}`\# ${file}\~ 2>/dev/null # remove temp files
# cleanup
# - Remove unused directories
local stack_count=6 # can't expect more than 6 nested dirs, surely...
while [ $stack_count -gt 0 ]; do
stack_count=$(( $stack_count - 1 ))
find ${dir} -type d -exec rmdir {} \; 2>/dev/null
done
}
2017-08-27 01:57:08 +00:00
org(){
local org_loc=~/.config/org_notes.location
if ! [ -e $org_loc ] || [ "$(cat $org_loc)" = "" ];then
echo "Cannot find orgnotes git location. Please set the location in the file:
$org_loc
or run the install script."
return -1
fi
local org_dir=$(cat $org_loc)
local file=$1
2017-08-29 02:06:13 +00:00
local command=$2
2017-08-27 01:57:08 +00:00
case $file in
2017-08-28 23:48:51 +00:00
"")
tree -CD -P '*.org' -rt $org_dir\
2017-08-27 01:57:08 +00:00
| sed "s|${org_dir}|\nYou have the following org-mode notes:\n|"\
| sed -r 's|([^[].*)\s(\[.*\])\s(.*)|\t\2\t\1\3|'
return -1;
;;
2017-08-28 23:48:51 +00:00
-h);&
2017-08-27 01:57:08 +00:00
--help)
echo "
2017-08-29 02:06:13 +00:00
`basename $0` <filename> [--delete] [--move=<dest>]
2017-08-27 01:57:08 +00:00
Generates an org-notes file in a folder location set in the $org_loc file
";
return -1;
;;
esac
2017-08-29 18:39:49 +00:00
if [[ "$command" =~ "--" ]]; then
if [ "$command" = "--delete" ] || [[ "$command" =~ "--move=" ]]; then
else
echo "Unable to parse: $command"
return -1
fi
2017-08-27 01:57:08 +00:00
fi
2017-08-29 02:06:13 +00:00
local ext=$( echo $file | awk -F'.' '{print $NF}' )
2017-08-27 01:57:08 +00:00
[ "$ext" != ".org" ] && file=${file}.org
2017-08-29 02:06:13 +00:00
local eloc=$org_dir/$file
2017-08-27 01:57:08 +00:00
2017-08-29 02:06:13 +00:00
if [ "$command" != "" ]; then
2017-08-27 01:57:08 +00:00
if [ -e $eloc ]; then
2017-08-29 02:06:13 +00:00
case $command in
"--delete")
echo -n "Remove $file? [y/n] "; read ans;
if [ "$ans" = "y" ]; then
rm ${eloc} && echo "Deleted."
__cleanup_org $eloc $org_dir
return 0
fi
;;
"--move="*)
local dest=`echo $command | sed 's|--move=||'`
echo -n "Move $file to $dest ? [y/n] "; read ans;
if [ "$ans" = "y" ]; then
local ext1=$( echo $dest | awk -F'.' '{print $NF}' )
[ "$ext1" != ".org" ] && dest=${dest}.org
local edest=$org_dir/$dest
mkdir -p $org_dir/`dirname $dest`
mv $eloc $edest && echo "Moved: $file --> $dest"
__cleanup_org $eloc $org_dir
return 0
fi
;;
esac
2017-08-27 01:57:08 +00:00
else
echo "Cannot find $file. Aborting."
2017-08-29 02:06:13 +00:00
return -1
2017-08-27 01:57:08 +00:00
fi
else
2017-08-29 02:06:13 +00:00
# no command, just create
2017-08-27 01:57:08 +00:00
local dirn=`dirname $file`
mkdir -p $org_dir/$dirn
emacs $org_dir/$file
2017-08-29 02:06:13 +00:00
return 0
2017-08-27 01:57:08 +00:00
fi
}
#fpath=(~/.zsh/completion $fpath)
autoload -U compinit
compinit