vinaigrette/ynh-build
2018-05-03 03:21:34 +02:00

158 lines
3.2 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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