参考所有分组:锁定loadusr资产清单校验,测试通过

This commit is contained in:
cnc
2026-06-03 17:00:15 +08:00
parent 180c0f6dbe
commit 3cc7590121
2 changed files with 161 additions and 16 deletions

View File

@@ -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