#!/bin/bash
editpost() {
- builtin cd "$JEKYLL_LOCAL_ROOT/_posts"
-
- COUNTER=1
- NUMBER="$RANDOM"
- TMPFILE="/tmp/editpost-$NUMBER"
-
- for POST in *
- do
- DATE=`echo $POST | grep -oE "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"`
- TITLE=`cat $POST | grep -oE "title: (.+)"`
- TITLE=`echo $TITLE | sed 's/title: //'`
- echo "$COUNTER) $DATE $TITLE" >> "$TMPFILE"
- POSTS[$COUNTER]=$POST
- COUNTER=`expr $COUNTER + 1`
- done
- less $TMPFILE
- read -p "Number of post to edit: " POST_TO_EDIT
- if [ -z "$EDITOR" ]
- then
- nano "${POSTS[$POST_TO_EDIT]}"
- else
- "$EDITOR" "${POSTS[$POST_TO_EDIT]}"
- fi
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ break
+ fi
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd "$SITE/_posts"
+
+ COUNTER=1
+ NUMBER="$RANDOM"
+ TMPFILE="/tmp/editpost-$NUMBER"
+
+ for POST in *
+ do
+ DATE=`echo $POST | grep -oE "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"`
+ TITLE=`cat $POST | grep -oE "title: (.+)"`
+ TITLE=`echo $TITLE | sed 's/title: //'`
+ echo "$COUNTER) $DATE $TITLE" >> "$TMPFILE"
+ POSTS[$COUNTER]=$POST
+ COUNTER=`expr $COUNTER + 1`
+ done
+ less $TMPFILE
+ read -p "Number of post to edit: " POST_TO_EDIT
+ if [ -z "$EDITOR" ]
+ then
+ nano "${POSTS[$POST_TO_EDIT]}"
+ else
+ "$EDITOR" "${POSTS[$POST_TO_EDIT]}"
+ fi
}
newpost() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
- # 'builtin cd' into the local jekyll root
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
- builtin cd "$JEKYLL_LOCAL_ROOT/_posts"
+ loc=0
- # Get the date for the new post's filename
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ JEKYLL_FORMATTING=${MARKUPS[$loc]}
+ break
+ fi
+ loc=$(($loc+1))
+ done
- FNAME_DATE=$(date "+%Y-%m-%d")
+ # 'builtin cd' into the local jekyll root
- # If the user is using markdown formatting, let them choose what type of post they want. Sort of like Tumblr.
+ builtin cd "$SITE/_posts"
- OPTIONS="Text Quote Image Audio Video Link"
-
- if [ $JEKYLL_FORMATTING = "markdown" -o $JEKYLL_FORMATTING = "textile" ]
- then
- select OPTION in $OPTIONS
- do
- if [[ $OPTION = "Text" ]]
- then
- POST_TYPE="Text"
- break
- fi
+ # Get the date for the new post's filename
- if [[ $OPTION = "Quote" ]]
- then
- POST_TYPE="Quote"
- break
- fi
-
- if [[ $OPTION = "Image" ]]
- then
- POST_TYPE="Image"
- break
- fi
+ FNAME_DATE=$(date "+%Y-%m-%d")
- if [[ $OPTION = "Audio" ]]
- then
- POST_TYPE="Audio"
- break
- fi
+ # If the user is using markdown or textile formatting, let them choose what type of post they want. Sort of like Tumblr.
- if [[ $OPTION = "Video" ]]
- then
- POST_TYPE="Video"
- break
- fi
+ OPTIONS="Text Quote Image Audio Video Link"
- if [[ $OPTION = "Link" ]]
- then
- POST_TYPE="Link"
- break
- fi
- done
- fi
+ if [ $JEKYLL_FORMATTING = "markdown" -o $JEKYLL_FORMATTING = "textile" ]
+ then
+ select OPTION in $OPTIONS
+ do
+ if [[ $OPTION = "Text" ]]
+ then
+ POST_TYPE="Text"
+ break
+ fi
- # Get the title for the new post
+ if [[ $OPTION = "Quote" ]]
+ then
+ POST_TYPE="Quote"
+ break
+ fi
- read -p "Enter title of the new post: " POST_TITLE
+ if [[ $OPTION = "Image" ]]
+ then
+ POST_TYPE="Image"
+ break
+ fi
- # Convert the spaces in the title to hyphens for use in the filename
+ if [[ $OPTION = "Audio" ]]
+ then
+ POST_TYPE="Audio"
+ break
+ fi
- FNAME_POST_TITLE=`echo $POST_TITLE | tr ' ' "-"`
+ if [[ $OPTION = "Video" ]]
+ then
+ POST_TYPE="Video"
+ break
+ fi
- # Now, put it all together for the full filename
+ if [[ $OPTION = "Link" ]]
+ then
+ POST_TYPE="Link"
+ break
+ fi
+ done
+ fi
- FNAME="$FNAME_DATE-$FNAME_POST_TITLE.$JEKYLL_FORMATTING"
+ # Get the title for the new post
- # And, finally, create the actual post file. But we're not done yet...
+ read -p "Enter title of the new post: " POST_TITLE
- touch "$FNAME"
+ # Convert the spaces in the title to hyphens for use in the filename
- # Write a little stuff to the file for the YAML Front Matter
-
- echo "---" >> $FNAME
+ FNAME_POST_TITLE=`echo $POST_TITLE | tr ' ' "-"`
- # Now we have to get the date, again. But this time for in the header (YAML Front Matter) of
- # the file
+ # Now, put it all together for the full filename
- YAML_DATE=$(date "+%B %d %Y %X")
+ FNAME="$FNAME_DATE-$FNAME_POST_TITLE.$JEKYLL_FORMATTING"
- # Echo the YAML Formatted date to the post file
+ # And, finally, create the actual post file. But we're not done yet...
- echo "date: $YAML_DATE" >> $FNAME
+ touch "$FNAME"
+
+ # Write a little stuff to the file for the YAML Front Matter
+
+ echo "---" >> $FNAME
+
+ # Now we have to get the date, again. But this time for in the header (YAML Front Matter) of
+ # the file
- # Echo the original post title to the YAML Front Matter header
+ YAML_DATE=$(date "+%B %d %Y %X")
- echo "title: $POST_TITLE" >> $FNAME
+ # Echo the YAML Formatted date to the post file
- # And, now, echo the "post" layout to the YAML Front Matter header
+ echo "date: $YAML_DATE" >> $FNAME
- echo "layout: post" >> $FNAME
+ # Echo the original post title to the YAML Front Matter header
- # Close the YAML Front Matter Header
+ echo "title: $POST_TITLE" >> $FNAME
- echo "---" >> $FNAME
- echo >> $FNAME
+ # And, now, echo the "post" layout to the YAML Front Matter header
- # Generate template text based on the post type
+ echo "layout: post" >> $FNAME
- if [[ $JEKYLL_FORMATTING = "markdown" ]]
- then
- if [[ $POST_TYPE = "Text" ]]
- then
- true
- fi
-
- if [[ $POST_TYPE = "Quote" ]]
- then
- echo "> Quote" >> $FNAME
- echo >> $FNAME
- echo "— Author" >> $FNAME
- fi
-
- if [[ $POST_TYPE = "Image" ]]
- then
- echo "" >> $FNAME
- fi
-
- if [[ $POST_TYPE = "Audio" ]]
- then
- echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
- fi
-
- if [[ $POST_TYPE = "Video" ]]
- then
- echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
- fi
-
- if [[ $POST_TYPE = "Link" ]]
- then
- echo "[link][1]" >> $FNAME
- echo >> $FNAME
- echo "> Quote" >> $FNAME
- echo >> $FNAME
- echo "[1]: url" >> $FNAME
- fi
- fi
+ # Close the YAML Front Matter Header
- if [[ $JEKYLL_FORMATTING = "textile" ]]
- then
- if [[ $POST_TYPE = "Text" ]]
- then
- true
- fi
+ echo "---" >> $FNAME
+ echo >> $FNAME
- if [[ $POST_TYPE = "Quote" ]]
- then
- echo "bq. Quote" >> $FNAME
- echo >> $FNAME
- echo "— Author" >> $FNAME
- fi
+ # Generate template text based on the post type
- if [[ $POST_TYPE = "Image" ]]
- then
- echo "!url(alt text)" >> $FNAME
- fi
+ if [[ $JEKYLL_FORMATTING = "markdown" ]]
+ then
+ if [[ $POST_TYPE = "Text" ]]
+ then
+ true
+ fi
- if [[ $POST_TYPE = "Audio" ]]
- then
- echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
- fi
+ if [[ $POST_TYPE = "Quote" ]]
+ then
+ echo "> Quote" >> $FNAME
+ echo >> $FNAME
+ echo "— Author" >> $FNAME
+ fi
- if [[ $POST_TYPE = "Video" ]]
- then
- echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
- fi
+ if [[ $POST_TYPE = "Image" ]]
+ then
+ echo "" >> $FNAME
+ fi
- if [[ $POST_TYPE = "Link" ]]
- then
- echo "\"Site\":url" >> $FNAME
- echo >> $FNAME
- echo "bq. Quote" >> $FNAME
- fi
- fi
-
- # Open the file in your favorite editor
-
- "$EDITOR" $FNAME
+ if [[ $POST_TYPE = "Audio" ]]
+ then
+ echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Video" ]]
+ then
+ echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Link" ]]
+ then
+ echo "[link][1]" >> $FNAME
+ echo >> $FNAME
+ echo "> Quote" >> $FNAME
+ echo >> $FNAME
+ echo "[1]: url" >> $FNAME
+ fi
+ fi
+
+ if [[ $JEKYLL_FORMATTING = "textile" ]]
+ then
+ if [[ $POST_TYPE = "Text" ]]
+ then
+ true
+ fi
+
+ if [[ $POST_TYPE = "Quote" ]]
+ then
+ echo "bq. Quote" >> $FNAME
+ echo >> $FNAME
+ echo "— Author" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Image" ]]
+ then
+ echo "!url(alt text)" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Audio" ]]
+ then
+ echo "<html><audio src=\"/path/to/audio/file\" controls=\"controls\"></audio></html>" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Video" ]]
+ then
+ echo "<html><video src=\"/path/to/video\" controls=\"controls\"></video></html>" >> $FNAME
+ fi
+
+ if [[ $POST_TYPE = "Link" ]]
+ then
+ echo "\"Site\":url" >> $FNAME
+ echo >> $FNAME
+ echo "bq. Quote" >> $FNAME
+ fi
+ fi
+
+ # Open the file in your favorite editor
+
+ "$EDITOR" $FNAME
+}
+
+function testsite() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ break
+ fi
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd $SITE
+ jekyll --server --auto
+}
+
+function buildsite() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ break
+ fi
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd $SITE
+ rm -rf _site
+ jekyll --no-server
+}
+
+function deploysite() {
+ unset SITE
+ if [ -z "$1" ]
+ then
+ echo "Error: no site specified."
+ echo "The site is the name of the directory your project is in."
+ return 1
+ fi
+
+ loc=0
+
+ for site in ${SITES[@]}
+ do
+ if [ "$(basename $site)" = "$1" ]
+ then
+ SITE=$site
+ REMOTE=${REMOTES[$loc]}
+ break
+ fi
+ loc=$(($loc+1))
+ done
+
+ if [ -z "$SITE" ]
+ then
+ echo "No such site."
+ return 1
+ fi
+
+ builtin cd $SITE
+ rsync -rz $REMOTE
}