收紧TRSRN资产清单校验

This commit is contained in:
cnc
2026-06-03 16:44:33 +08:00
parent 702f94cc52
commit 180c0f6dbe
2 changed files with 339 additions and 0 deletions

View File

@@ -363,6 +363,14 @@ validate_generator_cli_contract() {
local cli_manifest_with_unused_postgui
local cli_manifest_with_unused_remap
local cli_manifest_with_unused_tooldata
local cli_trsrn_manifest
local cli_trsrn_without_g531_asset
local cli_trsrn_without_g69_asset
local cli_trsrn_without_halcmd_asset
local cli_trsrn_without_halcmd_import_asset
local cli_trsrn_without_on_abort_asset
local cli_trsrn_without_python_import_asset
local cli_trsrn_without_python_toplevel_asset
local cli_manifest_without_ini
local cli_manifest_without_hal
local cli_manifest_without_postgui
@@ -380,6 +388,14 @@ validate_generator_cli_contract() {
cli_manifest_with_unused_postgui="$cli_dir/bridgemill-manifest-with-unused-postgui.txt"
cli_manifest_with_unused_remap="$cli_dir/bridgemill-manifest-with-unused-remap.txt"
cli_manifest_with_unused_tooldata="$cli_dir/bridgemill-manifest-with-unused-tooldata.txt"
cli_trsrn_manifest="$cli_dir/trsrn-manifest.txt"
cli_trsrn_without_g531_asset="$cli_dir/trsrn-manifest-without-g531-asset.txt"
cli_trsrn_without_g69_asset="$cli_dir/trsrn-manifest-without-g69-asset.txt"
cli_trsrn_without_halcmd_asset="$cli_dir/trsrn-manifest-without-halcmd-asset.txt"
cli_trsrn_without_halcmd_import_asset="$cli_dir/trsrn-manifest-without-halcmd-import-asset.txt"
cli_trsrn_without_on_abort_asset="$cli_dir/trsrn-manifest-without-on-abort-asset.txt"
cli_trsrn_without_python_import_asset="$cli_dir/trsrn-manifest-without-python-import-asset.txt"
cli_trsrn_without_python_toplevel_asset="$cli_dir/trsrn-manifest-without-python-toplevel-asset.txt"
cli_manifest_without_ini="$cli_dir/bridgemill-manifest-without-ini.txt"
cli_manifest_without_hal="$cli_dir/bridgemill-manifest-without-hal.txt"
cli_manifest_without_postgui="$cli_dir/bridgemill-manifest-without-postgui.txt"
@@ -549,6 +565,118 @@ validate_generator_cli_contract() {
exit 1
fi
if ! awk -F: -v manifest="$manifest_file" '
function require(key) {
expected[++expected_count] = key
expected_keys[key] = 1
}
BEGIN {
require("config:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini")
require("config:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn_postgui.hal")
require("config:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini")
require("config:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn_postgui.hal")
require("remap:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/428remap.ngc")
require("remap:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/429remap.ngc")
require("remap:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/430remap.ngc")
require("tooldata:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.tbl")
require("tooldata:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.tbl")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/remap.py")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/toplevel.py")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/twp-helper-comp.py")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/util.py")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g531remap.ngc")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g533remap.ngc")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g536remap.ngc")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g69remap.ngc")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/on_abort_no_twp_reset.ngc")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/on_abort_with_twp_reset.ngc")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/vismach/twp_vismach.py")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/vismach/xyzacb-trsrn-gui.py")
require("asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/vismach/xyzbca-trsrn-gui.py")
}
{
key = $1 ":" $2
if (key in expected_keys) {
if (key in manifest_line) {
print "duplicate TRSRN switchkins source in " manifest ": " key > "/dev/stderr"
duplicate = 1
}
manifest_line[key] = $0
}
}
END {
missing = 0
for (expected_index = 1; expected_index <= expected_count; expected_index++) {
key = expected[expected_index]
if (!(key in manifest_line)) {
print "TRSRN switchkins source is not listed in " manifest ": " key > "/dev/stderr"
missing = 1
continue
}
print manifest_line[key]
}
exit missing || duplicate
}
' "$manifest_file" >"$cli_trsrn_manifest"; then
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/toplevel.py:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_python_toplevel_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_python_toplevel_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC PYTHON TOPLEVEL asset source" >&2
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/util.py:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_python_import_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_python_import_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC Python import asset source" >&2
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/twp-helper-comp.py:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_halcmd_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_halcmd_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC HALCMD loadusr asset source" >&2
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/vismach/twp_vismach.py:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_halcmd_import_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_halcmd_import_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC HALCMD Python import asset source" >&2
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g531remap.ngc:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_g531_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_g531_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC G53.1 remap asset source" >&2
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g69remap.ngc:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_g69_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_g69_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC G69 remap asset source" >&2
exit 1
fi
grep -Fv \
'asset:configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/on_abort_no_twp_reset.ngc:' \
"$cli_trsrn_manifest" >"$cli_trsrn_without_on_abort_asset"
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
"$cli_trsrn_without_on_abort_asset" >/dev/null 2>&1; then
echo "switchkins remap generator accepted manifest missing LinuxCNC ON_ABORT_COMMAND asset source" >&2
exit 1
fi
LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh --all-output-dir "$cli_dir/out" "$cli_manifest"
LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh "$cli_manifest" \
>"$cli_dir/linuxcnc_switchkins_remap_table.stdout.inc"