#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")" # LinuxCNC source basis: this guard ties the browser app entry point to # LinuxCNC RS274 parameter-file defaults, rs274ngc_pre.cc restore/save/read # file semantics, and the existing OPFS-backed wasm-core bridge. It validates # app integration policy only; it does not add CNC behavior or expand smoke # parsing. linuxcnc_root=${LINUXCNC_ROOT:-../linuxcnc} linuxcnc_root=$(cd "$linuxcnc_root" && pwd) grep -F '#define RS274NGC_PARAMETER_FILE_NAME_DEFAULT "rs274ngc.var"' \ "$linuxcnc_root/src/emc/rs274ngc/interp_internal.hh" >/dev/null grep -F '#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX ".bak"' \ "$linuxcnc_root/src/emc/rs274ngc/interp_internal.hh" >/dev/null grep -F 'int Interp::restore_parameters(const char *filename)' \ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null grep -F 'int Interp::save_parameters(const char *filename,' \ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null grep -F 'std::string tempfile = std::string(filename) + ".new";' \ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null grep -F '+ RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX;' \ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null grep -F 'read_text(command, _setup.file_pointer, _setup.linetext,' \ "$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null grep -F 'LinuxCNC browser app source map' docs/linuxcnc-browser-app-source-map.md >/dev/null grep -F 'must not add CNC behavior' docs/linuxcnc-browser-app-source-map.md >/dev/null grep -F 'must not expand the temporary smoke parser' docs/linuxcnc-browser-app-source-map.md >/dev/null grep -F '`RS274NGC_PARAMETER_FILE_NAME_DEFAULT` as `rs274ngc.var`' \ docs/linuxcnc-browser-app-source-map.md >/dev/null grep -F '`parseFileWithParameterFile(programPath, parameterPath, "linuxcnc", ...)`' \ docs/linuxcnc-browser-app-source-map.md >/dev/null grep -F '' web/index.html >/dev/null grep -F '' web/index.html >/dev/null if [[ "$(grep -Fc '