Select Git revision
git-scaffolding
git-scaffolding 1.76 KiB
#!/bin/sh
set -eu
DEFAULT_LICENSE='mit'
STAGED_FILES=''
log_skipping () {
echo "$1 already exists, skipping" >&2
}
usage () {
echo "$0: [-l license-type] [-n project_name] [-r]" >&2
exit 1
}
while getopts l:n:rh flag
do
case $flag in
l) LICENSE="$OPTARG";;
n) PROJECT_NAME="$OPTARG";;
r) RESTRUCTURED_TEXT='1';;
h) usage;;
\?) usage;;
esac
done
shift "$(( OPTIND - 1 ))"
if [ -n "${LICENSE:-}" ] && ! \
license -list | awk '{print \$1}' | grep --quiet --fixed-strings --line-regexp "$LICENSE"
then
echo 'Unknown license type.' >&2
exit 1
fi
if [ -z "${PROJECT_NAME:-}" ]
then
PROJECT_NAME="$(basename "$PWD")"
fi
if [ -f .gitignore ]
then
log_skipping .gitignore
else
git skel .gitignore
STAGED_FILES="$STAGED_FILES .gitignore"
fi
if [ -z "${RESTRUCTURED_TEXT:-}" ]
then
if [ -f README.md ]
then
log_skipping README.md
else
git skel README.md
sed -i "s/PROJECT_NAME/$PROJECT_NAME/" README.md
git add README.md
STAGED_FILES="$STAGED_FILES README.md"
fi
else
if [ -f README.rst ]
then
log_skipping README.rst
else
git skel README.rst
UNDERLINE="$(echo "$PROJECT_NAME" | sed 's/./#/g')"
sed -i "s/PROJECT_NAME/$PROJECT_NAME/" README.rst
sed -i "2s/.*/$UNDERLINE/" README.rst
git add README.rst
STAGED_FILES="$STAGED_FILES README.rst"
fi
fi
if [ -f LICENSE.txt ]
then
log_skipping LICENSE.txt
else
git license "${LICENSE:-$DEFAULT_LICENSE}"
STAGED_FILES="$STAGED_FILES LICENSE.txt"
fi
if [ -n "$STAGED_FILES" ]
then
# shellcheck disable=SC2086
git commit --message "Scaffolding." --only $STAGED_FILES
else
echo 'Skipped all files, nothing to commit.' >&2
fi