最后活跃于 1 month ago

修订 9e492105eadaa8acf7b0750b50fe60f1feb84a6e

gistfile1.txt 原始文件
1 cmd_dir="${WGCTL_DIR}/commands/${cmd}"
2
3 local subcmd_file="${cmd_dir}/${subcmd}.sh"
4 log::debug "looking for: $subcmd_file exists=$([ -f "$subcmd_file" ] && echo yes || echo no)"
5 [[ ! -f "$subcmd_file" ]] && return 1
6
7 _CURRENT_LOADING_CMD="${cmd}::${subcmd}"
8 _CURRENT_COMMAND="${cmd}::${subcmd}"
9 source "$subcmd_file"
10
11 log::debug "sourced: $subcmd_file exit=$?"
12 log::debug "on_load_fn=$on_load_fn exists=$(declare -f "$on_load_fn" &>/dev/null && echo yes || echo no)"
13
14 local fn_subcmd="${subcmd//-/_}"
15 local on_load_fn="cmd::${cmd}::${fn_subcmd}::on_load"
16
17 log::debug "load_subcmd: calling on_load, _CURRENT_COMMAND=$_CURRENT_COMMAND _CURRENT_LOADING_CMD=$_CURRENT_LOADING_CMD"
18 if declare -f "$on_load_fn" &>/dev/null; then
19 "$on_load_fn"
20 fi
21
22 _CURRENT_LOADING_CMD=""
23}
24
25function command::helpers() {
26 local file="${1:-}"
27 local cmd="${_CURRENT_LOADING_CMD:-}"
28 [[ -z "$file" || -z "$cmd" ]] && return 1
29 local cmd_name="${cmd%%::*}"
30 local path="$(ctx::commands)/${cmd_name}/${file}"
31 [[ -f "$path" ]] && source "$path"
32}
33
34# ── Run ───────────────────────────────────────────────────────────────────────
35
36# command::run_routed <cmd> <subcmd> <args...>
37# Runs a subcommand after routing is resolved.
38function command::run_routed() {
39 local cmd="$1" subcmd="$2"
40 shift 2
41 local -a args=("$@")
42
43 _CURRENT_COMMAND="${cmd}::${subcmd}"
44
45 # Apply command defaults (only for default subcommand)
46 local default_subcmd="${_COMMAND_DEFAULT[$cmd]:-}"