#!/bin/bash TEMP_DIR=$(mktemp -d) DEST_DIR=$1 CURRENT_DIR=$(dirname "$0") CURRENT_DIR=$(realpath ${CURRENT_DIR}) . "${CURRENT_DIR}/env.sh" "$2" "$3" "$4" "$5" "$6" if [ -f "${CURRENT_DIR}/../build/version.sh" ]; then source ${CURRENT_DIR}/../build/version.sh fi if [ -f "${CURRENT_DIR}/../build/git_rev.sh" ]; then source ${CURRENT_DIR}/../build/git_rev.sh fi function exit_and_clean() { echo $1 rm -rf ${TEMP_DIR} exit $2 } if [ "${PROJECT_VERSION}" == "" ]; then echo "Project version not set" exit 1 fi if [ "${PROJECT_GIT_REV}" == "" ]; then echo "Project git revision not set" exit 1 fi if [ ! -d "${PROJECT_DIST_DIR}" ]; then echo "Dist directory not found: ${PROJECT_DIST_DIR}" exit 1 fi if [ "${DEST_DIR}" == "" ]; then DEST_DIR="${CURRENT_DIR}/../dist" fi DEST_DIR=$(realpath "${DEST_DIR}") if [ ! -d "${DEST_DIR}" ]; then echo "Destination directory not found: ${DEST_DIR}" exit 1 fi PACKAGE_ROOT="${PROJECT_DIST_DIR}/.." PACKAGE_ROOT=$(realpath "${PACKAGE_ROOT}") rsync -av --progress ${PACKAGE_ROOT}/ ${TEMP_DIR}/ || exit_and_clean "Failed to rsync" 1 pushd "${DEST_DIR}" OUT_FILE=${PROJECT_APP_NAME}_${PROJECT_VERSION}_${PROJECT_GIT_REV}_${PROJECT_BUILD_ARCH}_${PROJECT_OS}.tar.gz tar cvzf "${OUT_FILE}" -C ${TEMP_DIR} . || exit_and_clean "Failed to create archive" 1 sha256sum "${OUT_FILE}" >"${OUT_FILE}.sha256" || exit_and_clean "Failed to create sha256 file" 1 if [ "${DEVELOPER_PRIVATE_KEY}" != "" ]; then openssl dgst -sha256 -sign "${DEVELOPER_PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || exit_and_clean "Failed to create signature file" 1 openssl dgst -sha256 -verify "${DEVELOPER_PUBLIC_KEY}" -signature "${OUT_FILE}.sig" "${OUT_FILE}" || exit_and_clean "Failed to validate signature file" 1 fi popd exit_and_clean "Created package successfully" 0