initial commit
This commit is contained in:
commit
33cb51928e
|
@ -0,0 +1,82 @@
|
|||
#!/usr/bin/env bash
|
||||
# update a git repository and copy its contents to a directory
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
if [[ "${TRACE-0}" == "1" ]]; then
|
||||
set -o xtrace
|
||||
fi
|
||||
|
||||
help() {
|
||||
echo "Update a git repository and copy the files to OUTDIR"
|
||||
echo "Intended for use with static websites"
|
||||
echo
|
||||
echo "Usage: ./site-update.sh [-b BRANCH|d SRCDIR|f FILE|h|p] OUTDIR"
|
||||
echo "Options"
|
||||
echo "b BRANCH git branch to update, defaults to the current branch in SRCDIR"
|
||||
echo "d SRCDIR directory containing git repository to update, defaults to current working directory"
|
||||
echo "f FILE update a batch of repositories, as defined in FILE"
|
||||
echo "h print this help message"
|
||||
echo "p publish files only, do not update"
|
||||
}
|
||||
|
||||
get_changes() {
|
||||
git fetch origin
|
||||
if [[ $(git status | grep behind) ]]; then
|
||||
git merge origin/"${BRANCH}"
|
||||
fi
|
||||
}
|
||||
|
||||
publish () {
|
||||
cp -r "${SRCDIR/*}" "${OUTDIR}"
|
||||
}
|
||||
|
||||
main() {
|
||||
echo "$@"
|
||||
OUTDIR="$1"
|
||||
if [[ ! -d "$OUTDIR" ]]; then
|
||||
echo "Invalid directory $OUTDIR"
|
||||
fi
|
||||
if [[ -n "$SRCDIR" ]]; then
|
||||
cd "${SRCDIR}"
|
||||
fi
|
||||
if [[ -n "$BRANCH" ]]; then
|
||||
git checkout "${BRANCH}"
|
||||
else
|
||||
BRANCH=$(git branch --show-current)
|
||||
fi
|
||||
if [[ "$PUBONLY" == false ]]; then
|
||||
get_changes
|
||||
fi
|
||||
diff "${SRCDIR} ${OUTDIR}"
|
||||
local rc=$?
|
||||
if [[ $rc -eq 1 ]]; then
|
||||
publish
|
||||
fi
|
||||
}
|
||||
|
||||
SRCDIR=
|
||||
BRANCH=
|
||||
FILE=
|
||||
PUBONLY=false
|
||||
|
||||
while getopts ":hd:f:b:p" option; do
|
||||
case $option in
|
||||
b) # select branch
|
||||
BRANCH=$OPTARG;;
|
||||
f) # file listing directories
|
||||
FILE=$OPTARG;;
|
||||
d) # directory to act on
|
||||
SRCDIR=$OPTARG;;
|
||||
h) #display help
|
||||
help
|
||||
exit;;
|
||||
p) #publish only, do not update
|
||||
PUBONLY=true;;
|
||||
\?) #invalid option
|
||||
echo "Error: Invalid option"
|
||||
exit;;
|
||||
esac
|
||||
done
|
||||
|
||||
main "${@:$OPTIND}"
|
Loading…
Reference in New Issue