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