From dd436ceeb7dad20d278bffef336aa58d222d4586 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Thu, 20 Apr 2017 21:28:54 -0500
Subject: [PATCH] Add 'mfdoc' and 'mfpub' scripts to help with documentation

---
 buildroot/share/git/mfdoc  | 48 ++++++++++++++++++++
 buildroot/share/git/mfinfo |  5 ++-
 buildroot/share/git/mfpub  | 90 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 141 insertions(+), 2 deletions(-)
 create mode 100755 buildroot/share/git/mfdoc
 create mode 100755 buildroot/share/git/mfpub

diff --git a/buildroot/share/git/mfdoc b/buildroot/share/git/mfdoc
new file mode 100755
index 0000000000..89bc5a9f17
--- /dev/null
+++ b/buildroot/share/git/mfdoc
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+#
+# mfdoc
+#
+# Start Jekyll in watch mode to work on Marlin Documentation and preview locally
+#
+
+MFINFO=$(mfinfo "$@") || exit
+IFS=' ' read -a INFO <<< "$MFINFO"
+ORG=${INFO[0]}
+REPO=${INFO[2]}
+BRANCH=${INFO[4]}
+
+if [[ $ORG != "MarlinFirmware" || $REPO != "MarlinDocumentation" ]]; then
+  echo "Wrong repository."
+  exit
+fi
+
+if [[ $BRANCH != "master" ]]; then
+  echo "Stashing changes and changing to master."
+  git stash
+  git checkout master
+fi
+
+opensite() {
+  TOOL=$(which gnome-open xdg-open open | awk '{ print $1 }')
+  URL="http://127.0.0.1:4000/"
+  if [ -z "$TOOL" ]; then
+    echo "Can't find a tool to open the URL:"
+    echo $URL
+  else
+    echo "Opening preview site in the browser..."
+    "$TOOL" "$URL"
+  fi
+}
+
+echo "Previewing MarlinDocumentation..."
+
+# wait to open the url for about 8s
+( sleep 8; opensite ) &
+
+bundle exec jekyll serve --watch --incremental
+
+if [[ $BRANCH != "master" ]]; then
+  echo "Restoring branch '$BRANCH'"
+  git checkout $BRANCH
+  git stash pop
+fi
diff --git a/buildroot/share/git/mfinfo b/buildroot/share/git/mfinfo
index 84b067caeb..5715317552 100755
--- a/buildroot/share/git/mfinfo
+++ b/buildroot/share/git/mfinfo
@@ -25,8 +25,9 @@ if [[ $ORG != MarlinFirmware ]]; then
 fi
 
 case "$REPO" in
-  Marlin    ) TARG=RCBugFix ;;
-  MarlinDev ) TARG=dev ;;
+  Marlin              ) TARG=RCBugFix ;;
+  MarlinDev           ) TARG=dev ;;
+  MarlinDocumentation ) TARG=master ;;
 esac
 
 FORK=$(git remote get-url origin 2>/dev/null | sed -E 's/.*[\/:](.*)\/.*$/\1/')
diff --git a/buildroot/share/git/mfpub b/buildroot/share/git/mfpub
new file mode 100755
index 0000000000..d883561bd2
--- /dev/null
+++ b/buildroot/share/git/mfpub
@@ -0,0 +1,90 @@
+#!/usr/bin/env bash
+#
+# mfpub
+#
+# Use Jekyll to publish Marlin Documentation to the HTML site
+#
+
+MFINFO=$(mfinfo "$@") || exit
+IFS=' ' read -a INFO <<< "$MFINFO"
+ORG=${INFO[0]}
+FORK=${INFO[1]}
+REPO=${INFO[2]}
+TARG=${INFO[3]}
+BRANCH=${INFO[4]}
+
+if [[ $ORG != "MarlinFirmware" || $REPO != "MarlinDocumentation" ]]; then
+  echo "Wrong repository."
+  exit
+fi
+
+if [[ $BRANCH == "gh-pages" ]]; then
+  echo "Can't build from 'gh-pages.' Only the Jekyll branches."
+  bundle exec jekyll serve --watch
+  exit
+fi
+
+if [[ $BRANCH != "master" ]]; then
+  echo "Don't forget to update and push 'master'!"
+fi
+
+git checkout $BRANCH
+
+echo "Generating MarlinDocumentation..."
+
+# GOJF Card
+git stash
+
+TMPFOLDER=$( mktemp -d )
+COMMIT=$( git log --format="%H" -n 1 )
+
+# Clean out changes and other junk in the branch
+git reset --hard
+git clean -d -f
+
+# Push 'master' to the fork and make a proper PR...
+if [[ $BRANCH == "master" ]]; then
+
+  if [ -z "$(git branch -vv | grep ^\* | grep \\[origin)" ]; then firstpush; fi
+
+  git push -f origin
+
+  TOOL=$(which gnome-open xdg-open open | awk '{ print $1 }')
+  URL="https://github.com/$ORG/$REPO/compare/$TARG...$FORK:$BRANCH?expand=1"
+
+  if [ -z "$TOOL" ]; then
+    echo "Can't find a tool to open the URL:"
+    echo $URL
+  else
+    echo "Opening a New PR Form..."
+    "$TOOL" "$URL"
+  fi
+
+fi
+
+# Uncomment to compress the final html files
+# mv ./_plugins/jekyll-press.rb-disabled ./_plugins/jekyll-press.rb
+# bundle install
+
+bundle exec jekyll build --profile --trace --no-watch
+bundle exec htmlproofer ./_site --only-4xx --allow-hash-href --check-favicon --check-html --url-swap ".*marlinfw.org/:/"
+
+rsync -av _site/ ${TMPFOLDER}/
+
+# Clean out changes and other junk in the branch
+git reset --hard
+git clean -d -f
+
+# Sync built-site with gh-pages
+git checkout gh-pages
+rsync -av ${TMPFOLDER}/ ./
+
+# Commit and push the new live site directly
+git add --all
+git commit --message "Built from ${COMMIT}"
+git push upstream
+
+rm -rf ${TMPFOLDER}
+
+# Go back to the branch we started from
+git checkout $BRANCH