aman/scripts/prepare_release.sh
Thales Maciel 31a1e069b3
Prepare the 1.0.0 GA release surface
Add the repo-side pieces for milestone 5: MIT licensing, real maintainer and forge metadata, a public support doc, 1.0.0 release notes, release-prep tooling, and CI uploads for the full candidate artifact set.

Keep source-tree version surfaces honest by reading the local project version in the CLI and About dialog, and cover the new release-prep plus version-fallback behavior with focused tests.

Document where raw validation evidence belongs, add the GA validation rollup, and archive the latest readiness review. Milestone 5 remains open until the forge release page is published and the milestone 2 and 3 matrices are filled with linked manual evidence.

Validation: PYTHONPATH=src python3 -m unittest discover -s tests -p 'test_*.py'; PYTHONPATH=src python3 -m unittest tests.test_release_prep tests.test_portable_bundle tests.test_aman_cli tests.test_config_ui; python3 -m py_compile src/*.py tests/*.py; PYTHONPATH=src python3 -m aman version
2026-03-12 19:36:52 -03:00

63 lines
1.6 KiB
Bash
Executable file

#!/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}"