2026-02-04 18:43:36 +00:00
|
|
|
#!/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"
|
2026-02-04 18:43:36 +00:00
|
|
|
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"
|
2026-02-04 18:43:36 +00:00
|
|
|
"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}"/
|
2026-02-04 18:43:36 +00:00
|
|
|
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}"
|