Browse Source

Add jrnl command for managing journals

Samuel W. Flint 4 years ago
parent
commit
0fe1b580a9
1 changed files with 147 additions and 0 deletions
  1. 147 0
      jrnl

+ 147 - 0
jrnl

@@ -0,0 +1,147 @@
+#!/bin/sh
+export JOURNAL_FILE=${LIBRARY_FILE:-~/.library/journals.rec}
+export LIBRARY_DIRECTORY=${LIBRARY_DIRECTOR:-~/.library}
+export LIBRARY_GIT=${LIBRARY_GIT:-detect}
+export LIBRARY_DEFAULT_FIELDS=${LIBRARY_DEFAULT_FIELDS:-ID,Title,Author,LCCN,Location,Course}
+PROGNAME=$(basename $0)
+
+if [[ $# -eq 0 ]] ; then
+    echo "$PROGNAME [ help | add_journal | add_issue | many_issues | git ]"
+    exit
+fi
+
+function display_help {
+    cat <<EOF
+$PROGNAME [help | add_journal | add_issue | many_issues | git ]
+
+help: show this help
+add_journal: add entry for a journal
+add_issue: add entry for an issue
+many_issues: add many issues
+git: perform git command
+EOF
+}
+
+function do_git {
+    if [[ $# -lt 1 ]] ; then
+        echo "$PROGNAME git args*"
+        exit 1
+    fi
+    FIRST=$1
+    if [[ $FIRST == "init" ]] ; then
+        OLD=`pwd`
+        cd "${LIBRARY_DIRECTORY}"
+        git "$@"
+        cd ${OLD}
+    else
+        if [[ $LIBRARY_GIT == "detect" ]] ; then
+            OLD=`pwd`
+            cd "${LIBRARY_DIRECTORY}"
+            git "$@"
+            cd ${OLD}
+        fi
+    fi
+}
+
+function add_journal {
+    if [[ $# -lt 2 ]] ; then
+        echo -n "Title: "
+        read TITLE
+        echo -n "ISSN: "
+        read ISSN
+        echo -n "Publisher: "
+        read PUBLISHER
+    else
+        TITLE=$1
+        shift
+        ISSN=$1
+        shift
+        PUBLISHER=$1
+        shift
+    fi
+    TMPDIR=. recins -t Journal \
+          -f Title -v "${TITLE}" \
+          -f ISSN -v "${ISSN}" \
+          -f Publisher -v "${PUBLISHER}" \
+          "${JOURNAL_FILE}"
+    do_git add `basename "${JOURNAL_FILE}"`
+    do_git commit -m "Added entry for journal ${TITLE}."
+}
+
+function add_issue {
+    if [[ $# -lt 3 ]] ; then
+        echo -n "Journal: "
+        read JOURNAL
+        echo -n "Volume: "
+        read VOLUME
+        echo -n "Issue: "
+        read ISSUE
+        echo -n "Location: "
+        read LOCATION
+    else
+        JOURNAL=$1
+        shift
+        VOLUME=$1
+        shift
+        ISSUE=$1
+        shift
+        LOCATION=$1
+        shift
+    fi
+    TMPDIR=. recins -t Issue \
+          -f Journal -v "${JOURNAL}" \
+          -f Volume -v "${VOLUME}" \
+          -f Issue -v "${ISSUE}" \
+          -f Location -v "${Location}" \
+          "${JOURNAL_FILE}"
+    do_git add `basename "${JOURNAL_FILE}"`
+    do_git commit -m "Added entry for Journal Issue"
+}
+
+function many_issues {
+    if [[ $@ -lt 1 ]] ; then
+        echo "$PROGNAME many_issues number"
+        exit 1
+    fi
+    echo $1
+    GITOLD="${LIBRARY_GIT}"
+    LIBRARY_GIT=FALSE
+    for i in {1..$1} ; do
+        add_issue
+    done
+    LIBRARY_GIT="${GITOLD}"
+    do_git add `basename "${JOURNAL_FILE}"`
+    do_git commit -m "Added ${1} Issues"
+}
+
+
+COMMAND=$1
+shift
+
+case "${COMMAND}" in
+    help)
+        display_help
+        exit
+        ;;
+    add_journal)
+        add_journal "$@"
+        exit
+        ;;
+    add_issue)
+        add_issue "$@"
+        exit
+        ;;
+    git)
+        do_git "$@"
+        exit
+        ;;
+    many_issues)
+        many_issues "$@"
+        exit
+        ;;
+    *)
+        display_help
+        exit
+esac
+
+journal