diff options
Diffstat (limited to 'extra/actions/Add Action?type?name!.sh')
-rwxr-xr-x | extra/actions/Add Action?type?name!.sh | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/extra/actions/Add Action?type?name!.sh b/extra/actions/Add Action?type?name!.sh new file mode 100755 index 0000000..6a322bc --- /dev/null +++ b/extra/actions/Add Action?type?name!.sh @@ -0,0 +1,84 @@ +#!/bin/sh + + +errecho() { + echo ${@} >&2 +} + +check_dir() { + DIR=${1} + + [ -d ${DIR} ] || + mkdir -p ${DIR} || + (echo "Can't create directory: ${DIR}" && exit 1) +} + +populate_file() { + FILE=${1} + + # Don't try to overwrite existing file + test -e ${FILE} && return + + + + cat > ${FILE} << EOF +#!/bin/sh + +# Selected files are stored here +FILES=\${@} + +# You can interate over them one by one +for FILE in \${FILES}; do + echo \$FILE +done + +# Or process them all at once +echo "\${FILES}" +EOF +} + + +## Starting point + +FILE=${1} +MIME=`hunter -m $FILE` +STATUS=$? + + +# MIME detection failed, bail out unless type is base +[ $STATUS != 0 ] && [ $type != "uni" ] && + echo $MIME && + exit 1 + +# Laziy not using XGD here because of OSX +ACTDIR="$HOME/.config/hunter/actions/" + +MIME_BASE=`echo $MIME | cut -d "/" -f 1` +MIME_SUB=`echo $MIME | cut -d "/" -f 2` + + +case $type in + uni) + AFILE="${ACTDIR}/${name}.sh" + check_dir "${ACTDIR}" + populate_file "${AFILE}" + $EDITOR "${AFILE}" + test -e "${AFILE}" && chmod +x "${AFILE}" + ;; + base) + BASEDIR="${ACTDIR}/$MIME_BASE" + AFILE="${BASEDIR}/${name}.sh" + check_dir "${BASEDIR}" + populate_file "${AFILE}" + $EDITOR "${AFILE}" + test -e ${AFILE} && chmod +x "${ACTDIR}/$name" + ;; + sub) + SUBDIR="${ACTDIR}/${MIME_BASE}/${MIME_SUB}" + AFILE="${SUBDIR}/${name}.sh" + check_dir ${SUBDIR} + populate_file "${AFILE}" + $EDITOR "${AFILE}" + test -e ${AFILE} && chmod+ +x ${AFILE} + ;; +esac |