web/tools/init

108 lines
2 KiB
Text
Raw Normal View History

2021-01-25 01:20:51 +03:00
#!/usr/bin/env bash
2020-07-28 21:27:40 +03:00
#
2023-02-28 19:48:25 +03:00
# Init the environment for new user.
2020-07-28 21:27:40 +03:00
set -eu
ACTIONS_WORKFLOW=pages-deploy.yml
2021-09-29 20:57:28 +03:00
TEMP_SUFFIX="to-delete" # temporary file suffixes that make `sed -i` compatible with BSD and Linux
2020-07-28 21:27:40 +03:00
help() {
echo "Usage:"
echo
echo " bash /path/to/init.sh [options]"
echo
echo "Options:"
echo " --no-gh Do not deploy to Github."
echo " -h, --help Print this help information."
}
2021-09-28 16:34:07 +03:00
check_status() {
if [[ -n $(git status . -s) ]]; then
echo "Error: Commit unstaged files first, and then run this tool again."
exit 1
2021-09-28 16:34:07 +03:00
fi
}
2020-07-28 21:27:40 +03:00
check_init() {
local _has_inited=false
if [[ ! -d .github ]]; then # using option `--no-gh`
_has_inited=true
else
if [[ -f .github/workflows/$ACTIONS_WORKFLOW ]]; then
# on BSD, the `wc` could contains blank
local _count
_count=$(find .github/workflows/ -type f -name "*.yml" | wc -l)
if [[ ${_count//[[:blank:]]/} == 1 ]]; then
_has_inited=true
fi
2020-07-28 21:27:40 +03:00
fi
fi
2020-09-01 09:54:29 +03:00
if $_has_inited; then
2020-07-28 21:27:40 +03:00
echo "Already initialized."
exit 0
fi
}
checkout_latest_tag() {
tag=$(git describe --tags "$(git rev-list --tags --max-count=1)")
git reset --hard "$tag"
}
2020-07-28 21:27:40 +03:00
init_files() {
2020-09-01 09:54:29 +03:00
if $_no_gh; then
2020-07-28 21:27:40 +03:00
rm -rf .github
else
## Change the files of `.github`
2020-07-28 21:27:40 +03:00
mv .github/workflows/$ACTIONS_WORKFLOW.hook .
rm -rf .github
mkdir -p .github/workflows
mv ./${ACTIONS_WORKFLOW}.hook .github/workflows/${ACTIONS_WORKFLOW}
2021-09-28 16:34:07 +03:00
## Cleanup image settings in site config
sed -i.$TEMP_SUFFIX "s/^img_cdn:.*/img_cdn:/;s/^avatar:.*/avatar:/" _config.yml
rm -f _config.yml.$TEMP_SUFFIX
2020-07-28 21:27:40 +03:00
fi
2021-09-28 16:34:07 +03:00
# remove the other fies
rm -rf _posts/*
2020-07-28 21:27:40 +03:00
2021-09-28 16:34:07 +03:00
# save changes
git add -A
git commit -m "chore: initialize the environment" -q
2020-07-28 21:27:40 +03:00
echo "[INFO] Initialization successful!"
}
2021-09-28 16:34:07 +03:00
check_status
2020-07-28 21:27:40 +03:00
check_init
_no_gh=false
2020-09-01 09:54:29 +03:00
while (($#)); do
2020-07-28 21:27:40 +03:00
opt="$1"
case $opt in
--no-gh)
_no_gh=true
shift
;;
-h | --help)
help
exit 0
;;
*)
# unknown option
help
exit 1
;;
2020-07-28 21:27:40 +03:00
esac
done
checkout_latest_tag
2020-07-28 21:27:40 +03:00
init_files