76 lines
1.5 KiB
Bash
Executable File
76 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# INUTILE
|
|
|
|
# Préparation d'une release ScoDoc
|
|
# Download last git
|
|
source config.sh
|
|
source utils.sh
|
|
|
|
usage() {
|
|
echo $1 >&2
|
|
echo "Usage: $0 [-f] -v 9.x.y, where 9.x.y est le numéro de version créé" >&2
|
|
echo " -f: force release even if there's local changes" >&2
|
|
exit 1
|
|
}
|
|
|
|
FORCE_RELEASE=0
|
|
while getopts "hfv:" opt; do
|
|
case $opt in
|
|
f)
|
|
FORCE_RELEASE=1
|
|
;;
|
|
v)
|
|
VERSION=$OPTARG
|
|
;;
|
|
h)
|
|
usage "Prépare une release"
|
|
;;
|
|
\?)
|
|
usage "Invalid option: -$OPTARG"
|
|
;;
|
|
:)
|
|
usage "Option -$OPTARG requires an argument."
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$VERSION" ]
|
|
then
|
|
usage
|
|
fi
|
|
|
|
SOURCE_URL="https://scodoc.org/git/viennet/ScoDoc.git"
|
|
SOURCE_BRANCH="ScoDoc8"
|
|
RESULTFILE="scodoc-$VERSION.tgz"
|
|
|
|
if [ "$FORCE_RELEASE" -eq 0 ]
|
|
then
|
|
# Check local diffs, ignoring file modes (changed on VMs)
|
|
local_diffs=$(git -c core.fileMode=false status --porcelain --untracked-files=no | wc -l)
|
|
if [ "$local_diffs" -ne 0 ]
|
|
then
|
|
die "you have local diffs: git commit or stash before releasing"
|
|
fi
|
|
fi
|
|
|
|
echo "Preparing release $VERSION"
|
|
|
|
mkdir "/tmp/$VERSION" || die "can't create directory /tmp/$VERSION"
|
|
cd "/tmp/$VERSION" || die "can't cd /tmp/$VERSION"
|
|
|
|
git clone "$SOURCE_URL" || die "git error cloning $SOURCE_URL"
|
|
cd ScoDoc || die "no ScoDoc directory !"
|
|
git checkout "$SOURCE_BRANCH" || die "git ckecking out branch $SOURCE_BRANCH"
|
|
|
|
cd ..
|
|
|
|
# --- Archive
|
|
echo "Preparing archive..."
|
|
mv ScoDoc scodoc
|
|
chown -R scodoc scodoc
|
|
tar cfz "$RESULTFILE" scodoc
|
|
echo
|
|
echo "Release: $(pwd)/$RESULTFILE"
|
|
|