cnotes/make-dos-zip.sh

97 lines
2.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#
# make-dos-zip.sh
# ================
# Packages already-built DOS cnotes binaries into a release zip.
#
# Assumes:
# - You have already run make -f makefile.tc in DOSBox
# - All .exe files + INSTALL.BAT are in the 'build/' directory
#
# Usage:
# ./make-dos-zip.sh [version]
#
# Examples:
# ./make-dos-zip.sh 0.1.1 → creates cnotes-v0.1.1-dos.zip
# ./make-dos-zip.sh → uses date as version (YYYYMMDD)
#
set -euo pipefail
VERSION="${1:-$(date +%Y%m%d)}"
ZIP_NAME="cnotes-v${VERSION}-dos.zip"
2026-02-04 19:06:21 +00:00
BUILD_DIR="BUILD"
DIST_DIR="dist-dos"
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${GREEN}Packaging DOS release: ${ZIP_NAME}${NC}"
# 1. Check required files exist in build/
REQUIRED_FILES=(
2026-02-04 19:06:21 +00:00
"CNADD.EXE"
"CNDUMP.EXE"
"CNCOUNT.EXE"
"CNDEL.EXE"
"CNFIND.EXE"
"CNHELP.EXE"
"INSTALL.BAT"
"READ-DOS.TXT"
)
missing=0
for file in "${REQUIRED_FILES[@]}"; do
if [ ! -f "${BUILD_DIR}/${file}" ]; then
echo -e "${RED}Missing required file: ${BUILD_DIR}/${file}${NC}"
missing=1
fi
done
if [ $missing -eq 1 ]; then
echo -e "${RED}Aborting: one or more required files are missing.${NC}"
echo "Make sure you have built with 'make -f makefile.tc' in DOSBox"
echo "and that INSTALL.BAT is present."
exit 1
fi
# 2. Prepare clean staging directory
rm -rf "${DIST_DIR}"
mkdir -p "${DIST_DIR}"
# 3. Copy files to staging
echo "Staging files..."
2026-02-04 19:06:21 +00:00
cp "${BUILD_DIR}"/*.EXE "${DIST_DIR}"/
cp "${BUILD_DIR}/INSTALL.BAT" "${DIST_DIR}"/
cp "$$ {BUILD_DIR}/READ-DOS.TXT" " $${DIST_DIR}"/ 2>/dev/null || {
echo -e "$$ {RED}Warning: READ-DOS.TXT not found in build/ (optional but recommended) $${NC}"
}
# Optional extras (uncomment/add if you have them)
# cp README-DOS.TXT "${DIST_DIR}"/ 2>/dev/null || true
# cp LICENSE "${DIST_DIR}"/ 2>/dev/null || true
# 4. Create zip
echo "Creating zip archive..."
cd "${DIST_DIR}"
zip -r -9 "../${ZIP_NAME}" . >/dev/null
cd ..
# 5. Optional SHA256
if command -v sha256sum >/dev/null 2>&1; then
sha256sum "${ZIP_NAME}" > "${ZIP_NAME}.sha256"
echo "Checksum: ${ZIP_NAME}.sha256"
elif command -v shasum >/dev/null 2>&1; then
shasum -a 256 "${ZIP_NAME}" > "${ZIP_NAME}.sha256"
echo "Checksum: ${ZIP_NAME}.sha256"
fi
# 6. Show result
echo -e "${GREEN}Done! Zip created:${NC}"
ls -lh "${ZIP_NAME}"*
echo ""
echo "Next steps:"
echo " 1. Upload ${ZIP_NAME} (and .sha256 if created) to Gitea release"
echo " 2. Optionally delete staging dir: rm -rf ${DIST_DIR}"