From 3e004d1bf392b499c7eee4cd60b55b150ad4a36e Mon Sep 17 00:00:00 2001 From: Cotes Chung <11371340+cotes2020@users.noreply.github.com> Date: Thu, 2 Jan 2020 01:21:43 +0800 Subject: [PATCH] Moved the script tools. --- README.md | 15 ++-- _config.yml | 11 +-- _posts/2019-08-09-getting-started.md | 15 ++-- build.sh | 109 ------------------------ init.sh | 62 -------------- tools/build.sh | 122 +++++++++++++++++++++++++++ tools/init.sh | 83 ++++++++++++++++++ pv.sh => tools/pv.sh | 8 +- run.sh => tools/run.sh | 21 ++--- 9 files changed, 237 insertions(+), 209 deletions(-) delete mode 100755 build.sh delete mode 100755 init.sh create mode 100755 tools/build.sh create mode 100755 tools/init.sh rename pv.sh => tools/pv.sh (65%) rename run.sh => tools/run.sh (88%) diff --git a/README.md b/README.md index 84b1629..6a42851 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,8 @@ jekyll-theme-chirpy/ ├── _posts # posts stay here ├── _scripts │ └── travis # CI stuff, remove it -├── .travis.yml # remove it, too +├── .travis.yml # remove this, too +├── .github # remove ├── assets ├── tabs │   └── about.md # the ABOUT page @@ -65,14 +66,10 @@ jekyll-theme-chirpy/ ├── LICENSE ├── README.md ├── _config.yml # configuration file -├── build.sh # script tool -├── run.sh # script tool -├── init.sh # script tool -├── pv.sh +├── tools # script tools ├── feed.xml ├── index.html ├── robots.txt -├── search.json └── sitemap.xml ``` @@ -98,7 +95,7 @@ The `SITE_URL` was defined by variable `url` in file `_config.yml`. You may want to preview the site before publishing, so just run the script tool: ```terminal -$ bash run.sh +$ bash tools/run.sh ``` >**Note**: The *Recent Update* list requires the latest git-log date of posts, thus make sure the changes in `_posts` have been committed before running this command. @@ -123,7 +120,7 @@ By deploying your site in this way, you can push the source code to GitHub repos **2**. Commit the changes of your repository, then run the initialization script: ```console -$ bash init.sh +$ bash tools/init.sh ``` It will automatically generates the *Latest Modified Date* and *Categories / Tags* page for the posts. @@ -142,7 +139,7 @@ For security reasons, GitHub Pages runs on `safe` mode, which means the third-pa **2**. Build your site by: ```console -$ bash build.sh -d /path/to/.github.io/ +$ bash tools/build.sh -d /path/to/.github.io/ ``` The build results will be stored in the root directory of `.github.io` and don't forget to push the changes of `.github.io` to branch `master` on GitHub. diff --git a/_config.yml b/_config.yml index 604bcb8..df97e00 100644 --- a/_config.yml +++ b/_config.yml @@ -8,7 +8,7 @@ title: Chirpy -description: 'A text-based Jekyll theme.' +description: 'A text-focused Jekyll theme.' # Replace with your domain, e.g. 'https://username.github.io' url: 'https://www.example.com' @@ -56,7 +56,7 @@ disqus: shortname: 'disqus' # Change to your Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname comments: true # boolean type, the global switch for posts comments. -# The year your website was first run. +# The year your website first ran. first_run: 2019 # boolean type, global switch for ToC in posts. @@ -154,13 +154,10 @@ compress_html: envs: [] exclude: - - vendor/ # Avoid Jekyll mistakenly read the vender directory on Travis-CI's VM . + - vendor # Avoid Jekyll mistakenly read the vender directory on Travis-CI's VM . - Gemfile.lock - Gemfile - - run.sh - - build.sh - - init.sh - - pv.sh + - tools sitemap_exclude: # Sitemap will exclude the following items. - /norobots/ diff --git a/_posts/2019-08-09-getting-started.md b/_posts/2019-08-09-getting-started.md index d605edf..c137aca 100644 --- a/_posts/2019-08-09-getting-started.md +++ b/_posts/2019-08-09-getting-started.md @@ -35,7 +35,8 @@ jekyll-theme-chirpy/ ├── _posts # posts stay here ├── _scripts │ └── travis # CI stuff, remove it -├── .travis.yml # remove it, too +├── .travis.yml # remove this, too +├── .github # remove ├── assets ├── tabs │   └── about.md # the ABOUT page @@ -45,14 +46,10 @@ jekyll-theme-chirpy/ ├── LICENSE ├── README.md ├── _config.yml # configuration file -├── build.sh # script tool -├── run.sh # script tool -├── init.sh # script tool -├── pv.sh +├── tools # script tools ├── feed.xml ├── index.html ├── robots.txt -├── search.json └── sitemap.xml ``` @@ -78,7 +75,7 @@ The `SITE_URL` was defined by variable `url` in file `_config.yml`. You may want to preview the site before publishing, so just run the script tool: ```terminal -$ bash run.sh +$ bash tools/run.sh ``` >**Note**: The *Recent Update* list requires the latest git-log date of posts, thus make sure the changes in `_posts` have been committed before running this command. @@ -102,7 +99,7 @@ By deploying your site in this way, you can push the source code to GitHub repos **2**. Commit the changes of your repository, then run the initialization script: ```console -$ bash init.sh +$ bash tools/init.sh ``` It will automatically generates the *Latest Modified Date* and *Categories / Tags* page for the posts. @@ -121,7 +118,7 @@ For security reasons, GitHub Pages runs on `safe` mode, which means the third-pa **2**. Build your site by: ```console -$ bash build.sh -d /path/to/.github.io/ +$ bash tools/build.sh -d /path/to/.github.io/ ``` The build results will be stored in the root directory of `.github.io` and don't forget to push the changes of `.github.io` to branch `master` on GitHub. diff --git a/build.sh b/build.sh deleted file mode 100755 index adecf23..0000000 --- a/build.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -# -# Build jekyll site and store site files in ./_site -# © 2019 Cotes Chung -# Published under MIT License - - -CMD="JEKYLL_ENV=production bundle exec jekyll b" -DEST=$(realpath '_site') - -help() { - echo "Usage:" - echo - echo " bash build.sh [options]" - echo - echo "Options:" - echo " -b, --baseurl The site relative url that start with slash, e.g. '/project'" - echo " -h, --help Print the help information" - echo " -d, --destination Destination directory (defaults to ./_site)" -} - - -init() { - set -eu - - if [[ -d .container ]]; then - rm -rf .container - fi - - if [[ -d _site ]]; then - jekyll clean - fi - - temp=$(mktemp -d) - cp -r * $temp - cp -r .git $temp - mv $temp .container - -} - - -check_unset() { - if [[ -z ${1:+unset} ]] - then - help - exit 1 - fi -} - - -while [[ $# -gt 0 ]] -do - opt="$1" - case $opt in - -b|--baseurl) - check_unset $2 - - if [[ $2 == \/* ]] - then - CMD+=" -b $2" - else - help - exit 1 - fi - - shift - shift - ;; - -d|--destination) - check_unset $2 - DEST=$(realpath $2) - shift; - shift; - ;; - -h|--help) - help - exit 0 - ;; - *) # unknown option - help - exit 1 - ;; - esac -done - - -init - -cd .container - -echo "$ cd $(pwd)" -python _scripts/py/init_all.py - -CMD+=" -d ${DEST}" -echo "\$ $CMD" -eval $CMD -echo -e "\nBuild success, the site files placed in '${DEST}'." - -if [[ -d ${DEST}/.git ]]; then - - if [[ ! -z $(git -C $DEST status -s) ]]; then - git -C $DEST add . - git -C $DEST commit -m "[Automation] Update site files." -q - echo -e "\nPlease push the changes of '$(realpath $DEST)' to remote master branch.\n" - fi - -fi - -cd .. && rm -rf .container diff --git a/init.sh b/init.sh deleted file mode 100755 index b801e2a..0000000 --- a/init.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -# -# Initial the Categories/Tags pages and Lastmod for posts. -# © 2019 Cotes Chung -# Published under MIT License - - -CATEGORIES=false -TAGS=false -LASTMOD=false - -set -eu - -if [[ ! -z $(git status -s) ]]; then - echo "Warning: Commit the changes of the repository first." - git status -s - exit 1 -fi - -python _scripts/py/init_all.py - -find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf - -msg="Updated" - -if [[ ! -z $(git status categories -s) ]]; then - git add categories/ - msg+=" the Categories" - CATEGORIES=true -fi - - -if [[ ! -z $(git status tags -s) ]]; then - git add tags/ - if [[ $CATEGORIES = true ]]; then - msg+="," - else - msg+=" the" - fi - msg+=" Tags" - TAGS=true -fi - -if [[ ! -z $(git status _posts -s) ]]; then - git add _posts/ - if [[ $CATEGORIES = true || $TAGS = true ]]; then - msg+="," - else - msg+=" the" - fi - msg+=" Lastmod" - LASTMOD=true -fi - -if [[ $CATEGORIES = true || $TAGS = true || $LASTMOD = true ]]; then - msg+=" for post(s)." - git commit -m "[Automation] $msg" -else - msg="Nothing changed." -fi - -echo $msg diff --git a/tools/build.sh b/tools/build.sh new file mode 100755 index 0000000..79e272b --- /dev/null +++ b/tools/build.sh @@ -0,0 +1,122 @@ +#!/bin/bash +# +# Build jekyll site and store site files in ./_site +# © 2019 Cotes Chung +# Published under MIT License + +set -eu + +CMD="JEKYLL_ENV=production bundle exec jekyll b" + +WORK_DIR=$(dirname $(dirname $(realpath "$0"))) + +CONTAINER=${WORK_DIR}/.container + +DEST=${WORK_DIR}/_site + + +help() { + echo "Usage:" + echo + echo " bash build.sh [options]" + echo + echo "Options:" + echo " -b, --baseurl The site relative url that start with slash, e.g. '/project'" + echo " -h, --help Print the help information" + echo " -d, --destination Destination directory (defaults to ./_site)" +} + + +init() { + cd $WORK_DIR + + if [[ -d $CONTAINER ]]; then + rm -rf $CONTAINER + fi + + if [[ -d _site ]]; then + jekyll clean + fi + + temp=$(mktemp -d) + cp -r * $temp + cp -r .git $temp + mv $temp $CONTAINER +} + + +build() { + cd $CONTAINER + + echo "$ cd $(pwd)" + python _scripts/py/init_all.py + + CMD+=" -d ${DEST}" + echo "\$ $CMD" + eval $CMD + echo -e "\nBuild success, the site files have been placed in '${DEST}'." + + if [[ -d ${DEST}/.git ]]; then + if [[ ! -z $(git -C $DEST status -s) ]]; then + git -C $DEST add . + git -C $DEST commit -m "[Automation] Update site files." -q + echo -e "\nPlease push the changes of $DEST to remote master branch.\n" + fi + fi + + cd .. && rm -rf $CONTAINER +} + + +check_unset() { + if [[ -z ${1:+unset} ]] + then + help + exit 1 + fi +} + + +main() { + while [[ $# -gt 0 ]] + do + opt="$1" + case $opt in + -b|--baseurl) + check_unset $2 + + if [[ $2 == \/* ]] + then + CMD+=" -b $2" + else + help + exit 1 + fi + + shift + shift + ;; + -d|--destination) + check_unset $2 + DEST=$(realpath $2) + shift; + shift; + ;; + -h|--help) + help + exit 0 + ;; + *) # unknown option + help + exit 1 + ;; + esac + done + + init + + build +} + + +main diff --git a/tools/init.sh b/tools/init.sh new file mode 100755 index 0000000..bf8009e --- /dev/null +++ b/tools/init.sh @@ -0,0 +1,83 @@ +#!/bin/bash +# +# Initial the Categories/Tags pages and Lastmod for posts. +# © 2019 Cotes Chung +# Published under MIT License + +set -eu + +CATEGORIES=false +TAGS=false +LASTMOD=false + +WORK_DIR=$(dirname $(dirname $(realpath "$0"))) + +check_status() { + if [[ ! -z $(git status -s) ]]; then + echo "Warning: Commit the changes of the repository first." + git status -s + exit 1 + fi +} + + +update_files() { + python _scripts/py/init_all.py + find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf +} + + +commit() { + msg="Updated" + + if [[ ! -z $(git status categories -s) ]]; then + git add categories/ + msg+=" the Categories" + CATEGORIES=true + fi + + if [[ ! -z $(git status tags -s) ]]; then + git add tags/ + if [[ $CATEGORIES = true ]]; then + msg+="," + else + msg+=" the" + fi + msg+=" Tags" + TAGS=true + fi + + if [[ ! -z $(git status _posts -s) ]]; then + git add _posts/ + if [[ $CATEGORIES = true || $TAGS = true ]]; then + msg+="," + else + msg+=" the" + fi + msg+=" Lastmod" + LASTMOD=true + fi + + if [[ $CATEGORIES = true || $TAGS = true || $LASTMOD = true ]]; then + msg+=" for post(s)." + git commit -m "[Automation] $msg" + else + msg="Nothing changed." + fi + + echo $msg +} + + +main() { + + cd $WORK_DIR + + check_status + + update_files + + commit +} + +main diff --git a/pv.sh b/tools/pv.sh similarity index 65% rename from pv.sh rename to tools/pv.sh index ccfab08..ffdad64 100755 --- a/pv.sh +++ b/tools/pv.sh @@ -11,11 +11,13 @@ # MIT Licensed -URL_FILE=assets/data/proxy.json -PV_CACHE=assets/data/pageviews.json - set -eu +WORK_DIR=$(dirname $(dirname $(realpath "$0"))) +URL_FILE=${WORK_DIR}/assets/data/proxy.json +PV_CACHE=${WORK_DIR}/assets/data/pageviews.json + + PROXY_URL=$(jq -r '.proxyUrl' $URL_FILE) wget $PROXY_URL -O $PV_CACHE diff --git a/run.sh b/tools/run.sh similarity index 88% rename from run.sh rename to tools/run.sh index e2a3680..3bba2a4 100755 --- a/run.sh +++ b/tools/run.sh @@ -8,14 +8,17 @@ # © 2019 Cotes Chung # Published under MIT License +set -eu + +WORK_DIR=$(dirname $(dirname $(realpath "$0"))) -WORK_DIR=$PWD CONTAINER=.container SYNC_TOOL=_scripts/sh/sync_monitor.sh cmd="bundle exec jekyll s" realtime=false + help() { echo "Usage:" echo @@ -32,23 +35,21 @@ help() { cleanup() { - cd $WORK_DIR - rm -rf $CONTAINER + rm -rf ${WORK_DIR}/${CONTAINER} ps aux | grep fswatch | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1 } init() { - set -eu - if [[ -d $CONTAINER ]]; then - rm -rf $CONTAINER + if [[ -d ${WORK_DIR}/${CONTAINER} ]]; then + rm -rf ${WORK_DIR}/${CONTAINER} fi temp=$(mktemp -d) - cp -r * $temp - cp -r .git $temp - mv $temp $CONTAINER + cp -r ${WORK_DIR}/* $temp + cp -r ${WORK_DIR}/.git $temp + mv $temp ${WORK_DIR}/${CONTAINER} trap cleanup INT } @@ -74,7 +75,7 @@ check_command() { main() { init - cd $CONTAINER + cd ${WORK_DIR}/${CONTAINER} python _scripts/py/init_all.py if [[ $realtime = true ]]; then