#!/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