#!/bin/bash readonly THISSCRIPT=$0 readonly PROJECT=$1 readonly BRANCH=$2 readonly DISTRIB="stretch" readonly VERSION=$3 readonly TAG=$(echo "debian/$VERSION" | tr '~' '-') source /home/vinaigrette/config/config source /home/vinaigrette/scripts/common.sh # ##### # # Usage # # ##### # function usage() { cat << EOF Usage: $THISSCRIPT Arguments: moulinette, yunohost, yunohost-admin or SSOwat testing or stable x.y.z (ex: 2.6.1) EOF } # ################# # # Check user inputs # # ################# # function validate_arguments() { [[ $PROJECT =~ ^yunohost|yunohost-admin|moulinette|SSOwat$ ]] || critical "Invalid project $PROJECT" [[ $BRANCH =~ ^testing|stable|unstable$ ]] || critical "Invalid branch $BRANCH" [[ $DISTRIB =~ ^stretch$ ]] || critical "Invalid distribution $DISTRIB" [[ ! -z "$VERSION" ]] || critical "Invalid version $VERSION" [[ "$(tty)" != "not a tty" ]] || critical "You aint in a tty (are you in a 'lxc exec' ?) The script can't run because pbuilder won't be happy :|" } function checkout_tag() { # Update project's repository boxed "> Updating $GIT_REPOS/$PROJECT repository ... " cd $GIT_REPOS/$PROJECT git fetch --quiet git fetch --tags --quiet git checkout $DISTRIB-$BRANCH --quiet git reset --hard origin/$DISTRIB-$BRANCH --quiet # Validate constrains for the version number given (is in changelog + has corresponding tag) LASTVERSIONCHANGELOG=$(dpkg-parsechangelog -S Version 2>/dev/null) [[ "$VERSION" == "$LASTVERSIONCHANGELOG" ]] || critical "Version $VERSION is not the last version in changelog" git rev-parse "$TAG" >/dev/null 2>&1 || critical "Invalid version $VERSION (there's no tag $TAG in the git repo !)" # Get commit for the tag and for HEAD TAGCOMMIT=$(git rev-parse "$TAG") HEADCOMMIT=$(git rev-parse "HEAD") [[ "$TAGCOMMIT" == "$HEADCOMMIT" ]] || critical "Tag $TAG is not the HEAD of the branch :/" } function build() { # Create temporary folder TMP_FOLDER=$(mktemp -d) # Extract git archive a desired tag info "Exporting in $TMP_FOLDER ... " git archive $TAG --format=tar | tar -x -C $TMP_FOLDER # Build Debian package boxed "Building Debian package ... " cd $TMP_FOLDER $BUILD_DEB $DISTRIB $BRANCH . } function main() { validate_arguments boxed "Building $PROJECT $BRANCH release - $VERSION version" checkout_tag build } [[ "$1" =~ ^-h|--help$ ]] && (usage; exit 0) || main