summaryrefslogtreecommitdiffstats
path: root/extra/actions/Add Action?type?name!.sh
diff options
context:
space:
mode:
Diffstat (limited to 'extra/actions/Add Action?type?name!.sh')
-rwxr-xr-xextra/actions/Add Action?type?name!.sh84
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