#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" source "${SCRIPT_DIR}/package_common.sh" require_command sha256sum VERSION="$(project_version)" PACKAGE_NAME="$(project_name)" DIST_DIR="${DIST_DIR:-${ROOT_DIR}/dist}" ARCH_DIST_DIR="${DIST_DIR}/arch" PORTABLE_TARBALL="${DIST_DIR}/${PACKAGE_NAME}-x11-linux-${VERSION}.tar.gz" PORTABLE_CHECKSUM="${PORTABLE_TARBALL}.sha256" ARCH_TARBALL="${ARCH_DIST_DIR}/${PACKAGE_NAME}-${VERSION}.tar.gz" ARCH_PKGBUILD="${ARCH_DIST_DIR}/PKGBUILD" SHA256SUMS_PATH="${DIST_DIR}/SHA256SUMS" require_file() { local path="$1" if [[ -f "${path}" ]]; then return fi echo "missing required release artifact: ${path}" >&2 exit 1 } require_file "${PORTABLE_TARBALL}" require_file "${PORTABLE_CHECKSUM}" require_file "${ARCH_TARBALL}" require_file "${ARCH_PKGBUILD}" shopt -s nullglob wheels=("${DIST_DIR}/${PACKAGE_NAME//-/_}-${VERSION}-"*.whl) debs=("${DIST_DIR}/${PACKAGE_NAME}_${VERSION}_"*.deb) shopt -u nullglob if [[ "${#wheels[@]}" -eq 0 ]]; then echo "missing required release artifact: wheel for ${PACKAGE_NAME} ${VERSION}" >&2 exit 1 fi if [[ "${#debs[@]}" -eq 0 ]]; then echo "missing required release artifact: deb for ${PACKAGE_NAME} ${VERSION}" >&2 exit 1 fi mapfile -t published_files < <( cd "${DIST_DIR}" && find . -type f ! -name "SHA256SUMS" -print | LC_ALL=C sort ) if [[ "${#published_files[@]}" -eq 0 ]]; then echo "no published files found in ${DIST_DIR}" >&2 exit 1 fi ( cd "${DIST_DIR}" rm -f "SHA256SUMS" sha256sum "${published_files[@]}" >"SHA256SUMS" ) echo "generated ${SHA256SUMS_PATH}"