#!/bin/bash # Copyright (c) 2017 Icinga Development Team # Licensed as GPL-2.0+ set -e while getopts ":p:U:b:" opt do case "$opt" in p) PROJECT="$OPTARG" ;; U) UPSTREAM_GIT_URL="$OPTARG" ;; b) UPSTREAM_GIT_BRANCH="$OPTARG" ;; \?) echo "Unknown argument: $OPTARG" >&2 exit 1 ;; esac done : ${PROJECT:=icingaweb2} : ${UPSTREAM_GIT_URL:=https://github.com/Icinga/$PROJECT.git} : ${UPSTREAM_GIT_BRANCH:=master} set -x if [ -z "$UPSTREAM_GIT_NOREPO" ]; then if [ -d "${PROJECT}.git/" ]; then cd "${PROJECT}.git" if [ ! -d .git ]; then echo "This is not a GIT repository: $(pwd)" >&2 exit 1 fi if [ -z "$UPSTREAM_GIT_NOUPDATE" ]; then if [ "$(git config remote.origin.url)" != "${UPSTREAM_GIT_URL}" ]; then git remote set-url origin "${UPSTREAM_GIT_URL}" fi git fetch origin -p git checkout -f "${UPSTREAM_GIT_BRANCH}" git reset --hard "origin/${UPSTREAM_GIT_BRANCH}" fi git clean -fdx elif [ -z "$UPSTREAM_GIT_NOUPDATE" ]; then git clone -b "${UPSTREAM_GIT_BRANCH}" "${UPSTREAM_GIT_URL}" "${PROJECT}.git/" cd "${PROJECT}.git" else echo "Missing '${PROJECT}.git' directory!" >&2 exit 1 fi fi git_version=$(git describe --tags "${UPSTREAM_GIT_BRANCH}") package_version=$(echo "$git_version" | sed -e 's/^v//' -e 's/-/./g') prefix="${PROJECT}-${package_version}" tarball="${prefix}.orig.tar" git archive --format=tar --prefix="${prefix}/" -o "../${tarball}" "${UPSTREAM_GIT_BRANCH}" cd ../ # create files with the properly set versions for snapshot rm -rf "${prefix:?}/" mkdir -p "${prefix}"/library/Icinga/Application sed -e "s~const VERSION.*~const VERSION = '${package_version}';~" \ "${PROJECT}.git"/library/Icinga/Application/Version.php \ > "${prefix}"/library/Icinga/Application/Version.php for module in $(cd "${PROJECT}.git/modules"; ls); do test -e "${PROJECT}.git/modules/${module}/module.info" || continue mkdir -p "${prefix}/modules/${module}" sed -e "s~^Version:.*~Version: ${package_version}~" \ "${PROJECT}.git/modules/${module}/module.info" \ > "${prefix}/modules/${module}/module.info" done # add to tarball and remove tmpdir tar --append -f "${tarball}" "${prefix}"/ rm -rf "${prefix:?}/" # pack tarball gzip -vf9 "${tarball}" sha256sum "${tarball}.gz" # store package version for build scripts printf '%s\t%s\t%s\t%s' \ "${package_version}" \ "$(git rev-parse "${UPSTREAM_GIT_BRANCH}")" \ "$(basename "${tarball}.gz")" \ "${UPSTREAM_GIT_BRANCH}" \ > "${PROJECT}.version"