summaryrefslogtreecommitdiff
path: root/new-post.sh
diff options
context:
space:
mode:
Diffstat (limited to 'new-post.sh')
-rwxr-xr-xnew-post.sh79
1 files changed, 79 insertions, 0 deletions
diff --git a/new-post.sh b/new-post.sh
new file mode 100755
index 0000000..4ff0637
--- /dev/null
+++ b/new-post.sh
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+set -e
+
+numargs=2
+function usage {
+ echo "Usage: $0 [options] <post title> <post description>
+Options:
+ -i Create image directory
+ -d \"YYYY-MM-DD\" Custom date to use instead of today
+ -V Verbose
+ -x Dry run, don't make any changes
+"
+ exit 1
+}
+
+td=$(date "+%Y-%m-%d")
+
+while [ "$(echo $1 | head -c1)" = '-' -o "$#" -gt $numargs ]; do
+ arg="$1"
+ shift
+
+ case "$arg" in
+ "-i") IMG_DIR=1;;
+ "-d") td=$1; shift;;
+ "-V") VERBOSE=1;;
+ "-x") DRY_RUN=1;;
+ *)
+ echo "Unknown option '$arg'"
+ usage;;
+ esac
+done
+
+if [ "$#" != $numargs ]; then usage; fi
+
+if [ ! -z $VERBOSE ]; then set -x; fi
+
+title="$1"
+clean_title=$(echo "$title" |\
+ tr '[:upper:]' '[:lower:]' |\
+ sed 's/[^a-z0-9 ]//g' |\
+ tr ' ' '-' \
+ )
+
+description="$2"
+if $(echo "$description" | grep -q '[^.$!]$'); then
+ echo 'Description needs to be a complete sentence, with ending punctuation.'
+ exit 1
+fi
+
+postFileName=_posts/$td-$clean_title.md
+echo "Creating $postFileName"
+postContent=$(cat <<EOF
+---
+title: >-
+ $title
+description: >-
+ $description
+---
+
+Write stuff here, title will automatically be added as an h1
+
+## Secondary header
+
+Title is already h1 so all sub-titles should be h2 or below.
+EOF
+)
+
+if [ -z $DRY_RUN ]; then
+ echo "$postContent" > "$postFileName"
+fi
+
+if [ ! -z $IMG_DIR ]; then
+ imgDirName="img/$clean_title"
+ echo "Creating directory $imgDirName"
+ if [ -z $DRY_RUN ]; then
+ mkdir -p "$imgDirName"
+ fi
+fi