mirror of
https://github.com/YunoHost/vinaigrette.git
synced 2024-09-03 20:06:11 +02:00
Refactor/clean a bit ynh-build
This commit is contained in:
parent
dc64d109f1
commit
d1f799991d
1 changed files with 117 additions and 67 deletions
158
ynh-build
158
ynh-build
|
@ -1,102 +1,152 @@
|
|||
#!/bin/bash
|
||||
|
||||
readonly THISSCRIPT=$0
|
||||
readonly PROJECT=$1
|
||||
readonly BRANCH=$2
|
||||
readonly DISTRIB=$3
|
||||
readonly VERSION=$4
|
||||
readonly TAG="debian/$VERSION"
|
||||
|
||||
source /home/vinaigrette/config/config
|
||||
|
||||
# ##### #
|
||||
# Usage #
|
||||
# ##### #
|
||||
|
||||
usage() {
|
||||
function usage()
|
||||
{
|
||||
cat << EOF
|
||||
|
||||
Usage:
|
||||
`basename $0` <project> <branch> <version>
|
||||
$THISSCRIPT <project> <branch> <version>
|
||||
|
||||
Arguments:
|
||||
<project> moulinette, yunohost, yunohost-admin or SSOwat
|
||||
<branch> testing or stable
|
||||
<distrib> jessie or stretch
|
||||
<version> x.y.z (ex: 2.6.1)
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
if [[ $1 == "-h" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ################# #
|
||||
# Check user inputs #
|
||||
# ################# #
|
||||
|
||||
PROJECT=$1
|
||||
BRANCH=$2
|
||||
DISTRIB=$3
|
||||
VERSION=$4
|
||||
function validate_arguments()
|
||||
{
|
||||
|
||||
## Project
|
||||
if [[ ! $PROJECT =~ ^yunohost|yunohost-admin|moulinette|SSOwat$ ]]; then
|
||||
## Project
|
||||
if [[ ! $PROJECT =~ ^yunohost|yunohost-admin|moulinette|SSOwat$ ]]; then
|
||||
echo "Invalid project $PROJECT"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
## Branch
|
||||
if [[ ! $BRANCH =~ ^testing|stable$ ]]; then
|
||||
## Branch
|
||||
if [[ ! $BRANCH =~ ^testing|stable|unstable$ ]]; then
|
||||
echo "Invalid branch $BRANCH"
|
||||
usage
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# Distribution
|
||||
if [[ ! $DISTRIB =~ ^jessie|stretch$ ]]; then
|
||||
# Distribution
|
||||
if [[ ! $DISTRIB =~ ^jessie|stretch$ ]]; then
|
||||
echo "Invalid distribution $DISTRIB"
|
||||
usage
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
|
||||
# Version
|
||||
if [ -z "$VERSION" ]; then
|
||||
# Version
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Invalid version $VERSION"
|
||||
usage
|
||||
exit 4
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Sum up configuration
|
||||
echo "## #################################################### ##"
|
||||
echo "## Building $PROJECT $BRANCH release - $VERSION version"
|
||||
echo "## #################################################### ##"
|
||||
function checkout_tag()
|
||||
{
|
||||
# Update project's repository
|
||||
echo ""
|
||||
echo "> Updating $GIT_REPOS/$PROJECT repository ... "
|
||||
echo ""
|
||||
|
||||
# Update project's repository
|
||||
echo ""
|
||||
echo "## Updating $GIT_REPOS/$PROJECT repository ..."
|
||||
cd $GIT_REPOS/$PROJECT
|
||||
git fetch --quiet
|
||||
git fetch --tags --quiet
|
||||
git checkout $BRANCH --quiet
|
||||
git pull origin $BRANCH --quiet
|
||||
cd $GIT_REPOS/$PROJECT
|
||||
git fetch --quiet
|
||||
git fetch --tags --quiet
|
||||
git checkout $DISTRIB-$BRANCH --quiet
|
||||
#git checkout $BRANCH --quiet
|
||||
#git pull origin $BRANCH --quiet
|
||||
|
||||
# Check if tag really exists
|
||||
if git rev-parse "debian/$VERSION" >/dev/null 2>&1; then
|
||||
TAG="debian/$VERSION"
|
||||
else
|
||||
echo "Invalid version $VERSION (there's no debian/$VERSION tag in the git repo !)"
|
||||
usage
|
||||
LASTVERSIONCHANGELOG=$(dpkg-parsechangelog -S Version 2>/dev/null)
|
||||
|
||||
if [[ "$VERSION" != "$LASTVERSIONCHANGELOG" ]]
|
||||
then
|
||||
echo "Version $VERSION is not the last version in changelog"
|
||||
exit
|
||||
fi
|
||||
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
|
||||
|
||||
|
||||
# Create temporary folder
|
||||
TMP_FOLDER=$(mktemp -d)
|
||||
}
|
||||
|
||||
# Extract git archive a desired tag
|
||||
echo ""
|
||||
echo "## Exporting in $TMP_FOLDER ..."
|
||||
git archive $TAG --format=tar | tar -x -C $TMP_FOLDER
|
||||
function build()
|
||||
{
|
||||
# Create temporary folder
|
||||
TMP_FOLDER=$(mktemp -d)
|
||||
|
||||
# Build Debian package
|
||||
echo ""
|
||||
echo "## Building Debian package ..."
|
||||
echo ""
|
||||
cd $TMP_FOLDER
|
||||
$BUILD_DEB -d $BRANCH -c $DISTRIB .
|
||||
# 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 -d $BRANCH -c $DISTRIB .
|
||||
}
|
||||
|
||||
|
||||
function main()
|
||||
{
|
||||
|
||||
# If used asked for help, show usage
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
validate_arguments
|
||||
|
||||
# Sum up configuration
|
||||
echo "########################################################"
|
||||
echo "# Building $PROJECT $BRANCH release - $VERSION version "
|
||||
echo "########################################################"
|
||||
|
||||
checkout_tag
|
||||
build
|
||||
|
||||
}
|
||||
|
||||
|
||||
main
|
||||
|
||||
|
|
Loading…
Reference in a new issue