diff --git a/buildroot/share/git/mfdoc b/buildroot/share/git/mfdoc new file mode 100755 index 000000000..89bc5a9f1 --- /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 84b067cae..571531755 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 000000000..d883561bd --- /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