diff options
Diffstat (limited to 'logentry')
| -rwxr-xr-x | logentry | 54 | 
1 files changed, 54 insertions, 0 deletions
| diff --git a/logentry b/logentry new file mode 100755 index 0000000..0c1bd41 --- /dev/null +++ b/logentry @@ -0,0 +1,54 @@ +#!/usr/bin/zsh +# Usage: logentry <category> +# This script relies on LOGBOOK_ROOT being set, if it is not, the script fails. +if [ -z ${LOGBOOK_ROOT+x} ]; then +    echo "LOGBOOK_ROOT is not set, exiting" +    exit 1 +fi + +# It also needs to already exist +if [ ! -d "$LOGBOOK_ROOT" ]; then +    echo "LOGBOOK_ROOT is not a valid directory, exiting" +    exit 1 +fi + +# A category is required as an argument +if [ $# -le 0 ]; then +    echo "Usage: logentry <category> [title]" +    exit +fi + +# It also needs to exist - this is to prevent typos from creating a new category and messing everything up +CAT_PATH="${LOGBOOK_ROOT%/}/$1" +if [ ! -d "$CAT_PATH" ]; then +    echo "$1 is not a valid category, exiting" +    exit 1 +fi + +# Ensure that the target directory exists +MONTH=$(date +%B | tr '[:upper:]' '[:lower:]') +YEAR=$(date +%Y) +DIR="${CAT_PATH%/}/$YEAR/$MONTH" + +mkdir -p "$DIR" +if [ $? -ne 0 ]; then +    exit 1 +fi + +# Create full path +ISO_DATE=$(date --iso-8601) +if [ $# -gt 1 ]; then +    NAME_OPT="-$2" +fi +FULLNAME="$DIR/$ISO_DATE$NAME_OPT.md" + +# Create the file with the correct heading, but only if it doesn't already exist +if [ ! -e "$FULLNAME" ]; then +    echo "# $ISO_DATE\n## " > "$FULLNAME" +    if [ $? -ne 0 ]; then +        exit 1 +    fi +fi + +# Edit the file +vim "$FULLNAME" | 
