#!/bin/bash # INUTILE XXX # 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"