参考所有分组:锁定loadusr资产清单校验,测试通过
This commit is contained in:
@@ -363,6 +363,9 @@ validate_generator_cli_contract() {
|
||||
local cli_manifest_with_unused_postgui
|
||||
local cli_manifest_with_unused_remap
|
||||
local cli_manifest_with_unused_tooldata
|
||||
local cli_manifest_without_halfile_loadusr_asset
|
||||
local cli_melfa_manifest
|
||||
local cli_melfa_without_halcmd_loadusr_asset
|
||||
local cli_trsrn_manifest
|
||||
local cli_trsrn_without_g531_asset
|
||||
local cli_trsrn_without_g69_asset
|
||||
@@ -388,6 +391,9 @@ 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_manifest_without_halfile_loadusr_asset="$cli_dir/bridgemill-manifest-without-halfile-loadusr-asset.txt"
|
||||
cli_melfa_manifest="$cli_dir/melfa-manifest.txt"
|
||||
cli_melfa_without_halcmd_loadusr_asset="$cli_dir/melfa-manifest-without-halcmd-loadusr-asset.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"
|
||||
@@ -415,6 +421,7 @@ validate_generator_cli_contract() {
|
||||
require("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/429remap.ngc")
|
||||
require("remap:configs/sim/axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc")
|
||||
require("tooldata:configs/sim/axis/vismach/5axis/bridgemill/5axis.tbl")
|
||||
require("asset:src/hal/user_comps/vismach/5axisgui.py")
|
||||
}
|
||||
{
|
||||
key = $1 ":" $2
|
||||
@@ -528,6 +535,64 @@ validate_generator_cli_contract() {
|
||||
echo "switchkins remap generator accepted manifest missing LinuxCNC TOOL_TABLE source" >&2
|
||||
exit 1
|
||||
fi
|
||||
grep -Fv \
|
||||
'asset:src/hal/user_comps/vismach/5axisgui.py:' \
|
||||
"$cli_manifest" >"$cli_manifest_without_halfile_loadusr_asset"
|
||||
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
|
||||
"$cli_manifest_without_halfile_loadusr_asset" >/dev/null 2>&1; then
|
||||
echo "switchkins remap generator accepted manifest missing LinuxCNC HALFILE loadusr asset source" >&2
|
||||
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/melfa-sim/melfa.ini")
|
||||
require("config:configs/sim/axis/vismach/melfa-sim/melfa_dh.hal")
|
||||
require("config:configs/sim/axis/vismach/melfa-sim/melfa-postgui.hal")
|
||||
require("remap:configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc")
|
||||
require("remap:configs/sim/axis/vismach/melfa-sim/remap_subs/429remap.ngc")
|
||||
require("remap:configs/sim/axis/vismach/melfa-sim/remap_subs/430remap.ngc")
|
||||
require("tooldata:configs/sim/axis/vismach/melfa-sim/melfa.tbl")
|
||||
require("asset:src/hal/user_comps/vismach/melfagui.py")
|
||||
}
|
||||
{
|
||||
key = $1 ":" $2
|
||||
if (key in expected_keys) {
|
||||
if (key in manifest_line) {
|
||||
print "duplicate melfa 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 "melfa switchkins source is not listed in " manifest ": " key > "/dev/stderr"
|
||||
missing = 1
|
||||
continue
|
||||
}
|
||||
print manifest_line[key]
|
||||
}
|
||||
exit missing || duplicate
|
||||
}
|
||||
' "$manifest_file" >"$cli_melfa_manifest"; then
|
||||
exit 1
|
||||
fi
|
||||
grep -Fv \
|
||||
'asset:src/hal/user_comps/vismach/melfagui.py:' \
|
||||
"$cli_melfa_manifest" >"$cli_melfa_without_halcmd_loadusr_asset"
|
||||
if LINUXCNC_ROOT="$linuxcnc_root" ./generate-linuxcnc-switchkins-remap-table.sh \
|
||||
"$cli_melfa_without_halcmd_loadusr_asset" >/dev/null 2>&1; then
|
||||
echo "switchkins remap generator accepted manifest missing LinuxCNC HALCMD loadusr command asset source" >&2
|
||||
exit 1
|
||||
fi
|
||||
cp "$cli_manifest" "$cli_manifest_with_unused_hal"
|
||||
grep -F \
|
||||
'config:configs/sim/axis/vismach/melfa-sim/melfa_dh.hal:' \
|
||||
|
||||
@@ -102,11 +102,16 @@ read_ini_switchkins_config() {
|
||||
print "postgui_halfile\t" value
|
||||
} else if (section == "hal" && key == "halcmd") {
|
||||
lower = tolower(value)
|
||||
if (lower ~ /(^|[[:space:]])loadusr([[:space:]]|$)/ &&
|
||||
match(lower, /[^[:space:]]+\.py([[:space:]]|$)/)) {
|
||||
py = substr(value, RSTART, RLENGTH)
|
||||
sub(/[[:space:]]*$/, "", py)
|
||||
print "halcmd_loadusr_py\t" py
|
||||
if (lower ~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
||||
command = value
|
||||
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", command)
|
||||
while (command ~ /^-[^[:space:]]+[[:space:]]+/) {
|
||||
sub(/^-[^[:space:]]+[[:space:]]+/, "", command)
|
||||
}
|
||||
sub(/[[:space:]].*$/, "", command)
|
||||
if (command != "") {
|
||||
print "halcmd_loadusr\t" command
|
||||
}
|
||||
}
|
||||
} else if (section == "emcio" && key == "tool_table") {
|
||||
print "tool_table\t" value
|
||||
@@ -149,6 +154,34 @@ read_ini_switchkins_config() {
|
||||
' "$file"
|
||||
}
|
||||
|
||||
read_loadusr_commands() {
|
||||
local file=$1
|
||||
awk '
|
||||
function trim(value) {
|
||||
sub(/^[[:space:]]*/, "", value)
|
||||
sub(/[[:space:]]*$/, "", value)
|
||||
return value
|
||||
}
|
||||
{
|
||||
line = $0
|
||||
sub(/[[:space:]]*#.*/, "", line)
|
||||
line = trim(line)
|
||||
lower = tolower(line)
|
||||
if (lower !~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
||||
next
|
||||
}
|
||||
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", line)
|
||||
while (line ~ /^-[^[:space:]]+[[:space:]]+/) {
|
||||
sub(/^-[^[:space:]]+[[:space:]]+/, "", line)
|
||||
}
|
||||
sub(/[[:space:]].*$/, "", line)
|
||||
if (line != "") {
|
||||
print line
|
||||
}
|
||||
}
|
||||
' "$file"
|
||||
}
|
||||
|
||||
resolved_config_path=
|
||||
resolve_config_path() {
|
||||
local config_dir=$1
|
||||
@@ -382,6 +415,49 @@ asset_source_for_path() {
|
||||
resolved_asset_source=$resolved_linuxcnc_path
|
||||
}
|
||||
|
||||
resolved_loadusr_asset_source=
|
||||
loadusr_asset_source_for_command() {
|
||||
local config=$1
|
||||
local command=$2
|
||||
resolved_loadusr_asset_source=
|
||||
[[ -n "$command" ]] || return 1
|
||||
|
||||
if [[ "$command" == */* || "$command" == *.py ]]; then
|
||||
if asset_source_for_path "$config" "$command"; then
|
||||
resolved_loadusr_asset_source=$resolved_asset_source
|
||||
return 0
|
||||
fi
|
||||
if [[ "$command" != *.py ]] && asset_source_for_path "$config" "$command.py"; then
|
||||
resolved_loadusr_asset_source=$resolved_asset_source
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
|
||||
local source="src/hal/user_comps/vismach/$command.py"
|
||||
if [[ -f "$linuxcnc_root/$source" ]]; then
|
||||
resolved_loadusr_asset_source=$source
|
||||
return 0
|
||||
fi
|
||||
if asset_source_for_path "$config" "$command.py"; then
|
||||
resolved_loadusr_asset_source=$resolved_asset_source
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
record_loadusr_asset() {
|
||||
local config_path=$1
|
||||
local config=$2
|
||||
local command=$3
|
||||
local label=$4
|
||||
if loadusr_asset_source_for_command "$config" "$command"; then
|
||||
loadusr_asset_source=$resolved_loadusr_asset_source
|
||||
record_asset_source "$config_path" "$loadusr_asset_source" "$label"
|
||||
record_python_import_assets "$config_path" "$loadusr_asset_source"
|
||||
fi
|
||||
}
|
||||
|
||||
resolved_python_module_source=
|
||||
python_module_source_for_name() {
|
||||
local config=$1
|
||||
@@ -813,7 +889,7 @@ while IFS=: read -r group path _note; do
|
||||
python_paths=
|
||||
python_toplevels=
|
||||
python_remaps=
|
||||
halcmd_loadusr_pys=
|
||||
halcmd_loadusrs=
|
||||
remap_ngc_428=
|
||||
remap_ngc_429=
|
||||
remap_ngc_430=
|
||||
@@ -852,8 +928,8 @@ while IFS=: read -r group path _note; do
|
||||
python_remap)
|
||||
python_remaps+="${python_remaps:+$'\n'}$ini_value"
|
||||
;;
|
||||
halcmd_loadusr_py)
|
||||
halcmd_loadusr_pys+="${halcmd_loadusr_pys:+$'\n'}$ini_value"
|
||||
halcmd_loadusr)
|
||||
halcmd_loadusrs+="${halcmd_loadusrs:+$'\n'}$ini_value"
|
||||
;;
|
||||
remap_428)
|
||||
[[ -n "$remap_ngc_428" ]] || remap_ngc_428=$ini_value
|
||||
@@ -948,6 +1024,10 @@ while IFS=: read -r group path _note; do
|
||||
record_config_source "$path" "$hal_source" "HALFILE"
|
||||
add_alias "$hal_source" "$m428" "$m429" "$m430"
|
||||
add_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
|
||||
while IFS= read -r loadusr_command; do
|
||||
[[ -n "$loadusr_command" ]] || continue
|
||||
record_loadusr_asset "$path" "$linuxcnc_root/$hal_source" "$loadusr_command" "HALFILE loadusr"
|
||||
done < <(read_loadusr_commands "$linuxcnc_root/$hal_source")
|
||||
fi
|
||||
add_halfile_cases "$halfile" "$m428" "$m429" "$m430"
|
||||
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
|
||||
@@ -958,6 +1038,10 @@ while IFS=: read -r group path _note; do
|
||||
record_config_source "$path" "$hal_source" "POSTGUI_HALFILE"
|
||||
add_alias "$hal_source" "$m428" "$m429" "$m430"
|
||||
add_postgui_halfile_source_cases "$hal_source" "$m428" "$m429" "$m430"
|
||||
while IFS= read -r loadusr_command; do
|
||||
[[ -n "$loadusr_command" ]] || continue
|
||||
record_loadusr_asset "$path" "$linuxcnc_root/$hal_source" "$loadusr_command" "POSTGUI_HALFILE loadusr"
|
||||
done < <(read_loadusr_commands "$linuxcnc_root/$hal_source")
|
||||
fi
|
||||
add_postgui_halfile_cases "$halfile" "$m428" "$m429" "$m430"
|
||||
add_halfile_aliases "$halfile" "$m428" "$m429" "$m430"
|
||||
@@ -997,14 +1081,10 @@ while IFS=: read -r group path _note; do
|
||||
record_python_import_assets "$path" "$python_remap_source"
|
||||
fi
|
||||
done <<<"$python_remaps"
|
||||
while IFS= read -r loadusr_py; do
|
||||
[[ -n "$loadusr_py" ]] || continue
|
||||
if asset_source_for_path "$config" "$loadusr_py"; then
|
||||
halcmd_loadusr_source=$resolved_asset_source
|
||||
record_asset_source "$path" "$halcmd_loadusr_source" "HALCMD loadusr"
|
||||
record_python_import_assets "$path" "$halcmd_loadusr_source"
|
||||
fi
|
||||
done <<<"$halcmd_loadusr_pys"
|
||||
while IFS= read -r loadusr_command; do
|
||||
[[ -n "$loadusr_command" ]] || continue
|
||||
record_loadusr_asset "$path" "$config" "$loadusr_command" "HALCMD loadusr"
|
||||
done <<<"$halcmd_loadusrs"
|
||||
|
||||
for remap_source in "$remap_source_428" "$remap_source_429" "$remap_source_430"; do
|
||||
if [[ -n "$remap_source" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user