Merge pull request 'Add a dos installer, and improve the makefile on dos' (#1) from dos_installer into master
Reviewed-on: #1
This commit is contained in:
commit
c48a9ce54b
7
.gitignore
vendored
7
.gitignore
vendored
@ -4,3 +4,10 @@
|
|||||||
.vscode/
|
.vscode/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
build/
|
build/
|
||||||
|
BUILD/
|
||||||
|
dist-dos/
|
||||||
|
*.obj
|
||||||
|
*.OBJ
|
||||||
|
*.log
|
||||||
|
*.LOG
|
||||||
|
|
||||||
|
|||||||
89
INSTALL.BAT
Normal file
89
INSTALL.BAT
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
@echo off
|
||||||
|
REM ================================================================
|
||||||
|
REM INSTALL.BAT - cnotes v0.1.1 DOS Installer
|
||||||
|
REM ================================================================
|
||||||
|
REM Simple installer for Turbo C++ 3.0 built cnotes tools
|
||||||
|
REM Places everything in C:\CNOTES by default
|
||||||
|
REM ================================================================
|
||||||
|
|
||||||
|
cls
|
||||||
|
echo.
|
||||||
|
echo cnotes v0.1.1 - DOS Installation
|
||||||
|
echo =================================
|
||||||
|
echo.
|
||||||
|
echo This will install the cnotes commands (cnadd, cndump, etc.)
|
||||||
|
echo to C:\CNOTES
|
||||||
|
echo.
|
||||||
|
echo You can change the destination by editing this file.
|
||||||
|
echo.
|
||||||
|
|
||||||
|
if "%CNOTES_HOME%"=="" set TARGET=C:\CNOTES
|
||||||
|
if not "%CNOTES_HOME%"=="" set TARGET=%CNOTES_HOME%
|
||||||
|
|
||||||
|
echo Target directory: %TARGET%
|
||||||
|
echo.
|
||||||
|
|
||||||
|
if exist %TARGET%\nul goto exists
|
||||||
|
echo Creating directory %TARGET%...
|
||||||
|
md %TARGET%
|
||||||
|
if errorlevel 1 goto fail
|
||||||
|
|
||||||
|
:exists
|
||||||
|
echo Copying files...
|
||||||
|
copy cnadd.exe %TARGET%\cnadd.exe >nul
|
||||||
|
copy cndump.exe %TARGET%\cndump.exe >nul
|
||||||
|
copy cncount.exe %TARGET%\cncount.exe >nul
|
||||||
|
copy cndel.exe %TARGET%\cndel.exe >nul
|
||||||
|
copy cnfind.exe %TARGET%\cnfind.exe >nul
|
||||||
|
copy cnhelp.exe %TARGET%\cnhelp.exe >nul
|
||||||
|
|
||||||
|
if errorlevel 1 goto copyfail
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Add C:\CNOTES to PATH permanently? (Y/N)
|
||||||
|
choice /c:yn
|
||||||
|
if errorlevel 2 goto noautoexec
|
||||||
|
|
||||||
|
echo SET PATH=%%PATH%%;C:\CNOTES >> C:\AUTOEXEC.BAT
|
||||||
|
echo Added to AUTOEXEC.BAT (will take effect after reboot)
|
||||||
|
goto endauto
|
||||||
|
|
||||||
|
:noautoexec
|
||||||
|
echo Skipped AUTOEXEC.BAT modification.
|
||||||
|
echo.
|
||||||
|
echo To use cnotes:
|
||||||
|
echo 1. Add the directory to your PATH (recommended):
|
||||||
|
echo.
|
||||||
|
echo SET PATH=%%PATH%%;%TARGET%
|
||||||
|
echo.
|
||||||
|
echo (add this line to AUTOEXEC.BAT for permanent effect)
|
||||||
|
echo.
|
||||||
|
echo 2. Or run commands directly:
|
||||||
|
echo %TARGET%\cnadd "Your first note"
|
||||||
|
echo.
|
||||||
|
echo Type CNHELP for command overview.
|
||||||
|
echo.
|
||||||
|
goto endauto
|
||||||
|
|
||||||
|
:endauto
|
||||||
|
echo.
|
||||||
|
echo Installation complete!
|
||||||
|
echo.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:copyfail
|
||||||
|
echo.
|
||||||
|
echo ERROR: Could not copy one or more files.
|
||||||
|
echo Make sure all .EXE files are in the current directory.
|
||||||
|
echo Check disk space and write permissions.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:fail
|
||||||
|
echo.
|
||||||
|
echo ERROR: Could not create directory %TARGET%
|
||||||
|
echo Check drive letter, disk space, or path.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:end
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
37
MAKEFILE.TC
37
MAKEFILE.TC
@ -18,35 +18,68 @@ CFLAGS = -A -w -ml -I.\include
|
|||||||
|
|
||||||
SRCDIR = src
|
SRCDIR = src
|
||||||
INCDIR = include
|
INCDIR = include
|
||||||
BUILDDIR = build
|
BUILDDIR = BUILD
|
||||||
|
INSTALL_FILE = INSTALL.BAT
|
||||||
|
README_DOS = READ-DOS.TXT
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
$(CC) $(CFLAGS) -c -o$*.obj $<
|
$(CC) $(CFLAGS) -c -o$*.obj $<
|
||||||
|
|
||||||
all: $(BUILDDIR) $(BUILDDIR)\cnadd.exe $(BUILDDIR)\cndump.exe $(BUILDDIR)\cncount.exe $(BUILDDIR)\cndel.exe $(BUILDDIR)\cnfind.exe $(BUILDDIR)\cnhelp.exe
|
# ────────────────────────────────────────────────
|
||||||
|
# Main targets – split to avoid long command lines
|
||||||
|
# ────────────────────────────────────────────────
|
||||||
|
|
||||||
|
all: build-exes build-support-files
|
||||||
|
|
||||||
|
build-exes: $(BUILDDIR)\cnadd.exe \
|
||||||
|
$(BUILDDIR)\cndump.exe \
|
||||||
|
$(BUILDDIR)\cncount.exe \
|
||||||
|
$(BUILDDIR)\cndel.exe \
|
||||||
|
$(BUILDDIR)\cnfind.exe \
|
||||||
|
$(BUILDDIR)\cnhelp.exe
|
||||||
|
|
||||||
|
build-support-files: $(BUILDDIR)\$(INSTALL_FILE) \
|
||||||
|
$(BUILDDIR)\$(README_DOS)
|
||||||
|
|
||||||
$(BUILDDIR):
|
$(BUILDDIR):
|
||||||
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
|
|
||||||
|
# Individual exe rules (unchanged)
|
||||||
$(BUILDDIR)\cnadd.exe: $(SRCDIR)\cnadd.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
$(BUILDDIR)\cnadd.exe: $(SRCDIR)\cnadd.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnadd.exe $(SRCDIR)\cnadd.c
|
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnadd.exe $(SRCDIR)\cnadd.c
|
||||||
|
|
||||||
$(BUILDDIR)\cndump.exe: $(SRCDIR)\cndump.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
$(BUILDDIR)\cndump.exe: $(SRCDIR)\cndump.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cndump.exe $(SRCDIR)\cndump.c
|
$(CC) $(CFLAGS) -e$(BUILDDIR)\cndump.exe $(SRCDIR)\cndump.c
|
||||||
|
|
||||||
$(BUILDDIR)\cncount.exe: $(SRCDIR)\cncount.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
$(BUILDDIR)\cncount.exe: $(SRCDIR)\cncount.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cncount.exe $(SRCDIR)\cncount.c
|
$(CC) $(CFLAGS) -e$(BUILDDIR)\cncount.exe $(SRCDIR)\cncount.c
|
||||||
|
|
||||||
$(BUILDDIR)\cndel.exe: $(SRCDIR)\cndel.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
$(BUILDDIR)\cndel.exe: $(SRCDIR)\cndel.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cndel.exe $(SRCDIR)\cndel.c
|
$(CC) $(CFLAGS) -e$(BUILDDIR)\cndel.exe $(SRCDIR)\cndel.c
|
||||||
|
|
||||||
$(BUILDDIR)\cnfind.exe: $(SRCDIR)\cnfind.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
$(BUILDDIR)\cnfind.exe: $(SRCDIR)\cnfind.c $(INCDIR)\platform.h $(INCDIR)\config.h
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnfind.exe $(SRCDIR)\cnfind.c
|
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnfind.exe $(SRCDIR)\cnfind.c
|
||||||
|
|
||||||
$(BUILDDIR)\cnhelp.exe: $(SRCDIR)\cnhelp.c
|
$(BUILDDIR)\cnhelp.exe: $(SRCDIR)\cnhelp.c
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnhelp.exe $(SRCDIR)\cnhelp.c
|
$(CC) $(CFLAGS) -e$(BUILDDIR)\cnhelp.exe $(SRCDIR)\cnhelp.c
|
||||||
|
|
||||||
|
$(BUILDDIR)\$(INSTALL_FILE): $(INSTALL_FILE)
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
|
copy $(INSTALL_FILE) $(BUILDDIR)\$(INSTALL_FILE)
|
||||||
|
|
||||||
|
$(BUILDDIR)\$(README_DOS): $(README_DOS)
|
||||||
|
if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
||||||
|
copy $(README_DOS) $(BUILDDIR)\$(README_DOS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
if exist $(BUILDDIR)\*.exe del $(BUILDDIR)\*.exe
|
if exist $(BUILDDIR)\*.exe del $(BUILDDIR)\*.exe
|
||||||
if exist $(BUILDDIR)\*.obj del $(BUILDDIR)\*.obj
|
if exist $(BUILDDIR)\*.obj del $(BUILDDIR)\*.obj
|
||||||
|
if exist $(BUILDDIR)\$(INSTALL_FILE) del $(BUILDDIR)\$(INSTALL_FILE)
|
||||||
|
if exist $(BUILDDIR)\$(README_DOS) del $(BUILDDIR)\$(README_DOS)
|
||||||
if exist $(BUILDDIR) rmdir $(BUILDDIR)
|
if exist $(BUILDDIR) rmdir $(BUILDDIR)
|
||||||
|
|||||||
54
READ-DOS.TXT
Normal file
54
READ-DOS.TXT
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
cnotes v0.1.1 for DOS
|
||||||
|
=====================
|
||||||
|
|
||||||
|
A simple command-line note-taking system
|
||||||
|
Built with Turbo C++ 3.0 (large memory model)
|
||||||
|
|
||||||
|
WHAT IS THIS?
|
||||||
|
------------
|
||||||
|
cnotes lets you quickly add, view, search, count, and archive short notes
|
||||||
|
from the DOS prompt. Notes are saved in plain cnotes.csv in your notes
|
||||||
|
directory (usually current directory on DOS).
|
||||||
|
|
||||||
|
COMMANDS INCLUDED
|
||||||
|
-----------------
|
||||||
|
CNADD - Add a new note
|
||||||
|
CNDUMP - Show all notes in a table
|
||||||
|
CNCOUNT - Show statistics (total, by category, by date)
|
||||||
|
CNDEL - Archive (move) notes to cnotes.arc
|
||||||
|
CNFIND - Search notes by text/category/date
|
||||||
|
CNHELP - Show this help overview
|
||||||
|
|
||||||
|
INSTALLATION
|
||||||
|
------------
|
||||||
|
1. Unzip all files to any directory (e.g. C:\TEMP)
|
||||||
|
2. Run INSTALL.BAT from that directory
|
||||||
|
3. Follow the on-screen prompts
|
||||||
|
|
||||||
|
After installation:
|
||||||
|
- Best: add C:\CNOTES to your PATH
|
||||||
|
SET PATH=%PATH%;C:\CNOTES
|
||||||
|
(put this line in C:\AUTOEXEC.BAT to make it permanent)
|
||||||
|
- Or run commands with full path: C:\CNOTES\CNADD "Test note"
|
||||||
|
|
||||||
|
QUICK START
|
||||||
|
-----------
|
||||||
|
CNADD "Remember to call Bob"
|
||||||
|
CNADD -c Work "Meeting 3pm tomorrow"
|
||||||
|
|
||||||
|
CNDUMP - view all notes
|
||||||
|
CNHELP - full command help
|
||||||
|
CNHELP cnadd - help for one command
|
||||||
|
|
||||||
|
NOTES LOCATION
|
||||||
|
--------------
|
||||||
|
By default: current directory (cnotes.csv and cnotes.arc)
|
||||||
|
Override with environment variable:
|
||||||
|
SET CNOTES_PATH=C:\MYNOTES
|
||||||
|
|
||||||
|
Have fun logging notes the retro way!
|
||||||
|
|
||||||
|
Questions or bugs? See the project at:
|
||||||
|
https://repos.gmgauthier.com/gmgauthier/cnotes
|
||||||
|
|
||||||
|
Greg Gauthier - February 2026
|
||||||
97
make-dos-zip.sh
Executable file
97
make-dos-zip.sh
Executable file
@ -0,0 +1,97 @@
|
|||||||
|
#!/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}"
|
||||||
Loading…
Reference in New Issue
Block a user