Compare commits

...

5 commits

Author SHA1 Message Date
967e17e224
parse/commands,functions
All checks were successful
/ job (push) Successful in 4m55s
2025-07-08 15:54:55 +02:00
3b222fda83
fix
All checks were successful
/ job (push) Successful in 4m57s
2025-07-08 15:49:19 +02:00
9b61976835
commands/functions 2025-07-08 15:48:13 +02:00
0926d058f5
binaries/dedupe
All checks were successful
/ job (push) Successful in 5m26s
2025-07-08 15:26:34 +02:00
b108ace00a
code/binaries 2025-07-08 15:17:05 +02:00
3 changed files with 73 additions and 6 deletions

View file

@ -31,6 +31,7 @@ BEGIN {
RE_FUNC = RE_SPACES "\\(" RE_SPACES "\\)" RE_SPACES "{"
RE_ALIAS = RE_BEGIN "#=" RE_SPACES RE_VAR RE_END
RE_BINARY = RE_BEGIN "#\\|" RE_SPACES RE_VAR RE_END
RE_CLOSE = RE_BEGIN "}" RE_SPACES RE_END
RE_COMMAND = RE_BEGIN "#/" RE_SPACES RE_VAR RE_END
RE_CONSTANT = RE_BEGIN RE_CONST RE_SET RE_END
@ -52,6 +53,10 @@ BEGIN {
if (match($0, RE_ALIAS, m)) {
print m[1]
}
} else if (action == "binaries") {
if (match($0, RE_BINARY, m)) {
binaries[m[1]] = ""
}
} else if (action == "commands") {
if (match($0, RE_COMMAND, m)) {
print m[1]
@ -80,6 +85,18 @@ BEGIN {
} else {
reset()
}
} else if (action == "commands functions") {
if (match($0, RE_COMMAND, m)) {
append(m[1])
} else if (match($0, RE_FUNCTION, m)) {
n = split(doc, array, "\n")
for (i = 1; i<= n; i++) {
print array[i] " " m[1]
}
reset()
} else {
reset()
}
} else if (action == "doc") {
# doc
if (match($0, RE_SHEBANG, m)) {
@ -143,3 +160,11 @@ BEGIN {
}
}
}
END {
if (action == "binaries") {
for (binary in binaries) {
print binary
}
}
}

View file

@ -18,8 +18,12 @@ _rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")"
_rwx_code_aliases=""
# cache for code aliases functions
_rwx_code_aliases_functions=""
# cache for code binaries
_rwx_code_binaries=""
# cache for code commands
_rwx_code_commands=""
# cache for code commands functions
_rwx_code_commands_functions=""
# cache for code constants
_rwx_code_constants=""
# cache for code functions
@ -99,7 +103,7 @@ rwx_code_aliases() {
echo "${_rwx_code_aliases}"
}
# find aliased function
# find alias function
rwx_code_alias_function() {
local target="${1}"
local line name
@ -114,17 +118,43 @@ ${_rwx_code_aliases_functions}
EOF
}
# find command function
rwx_code_command_function() {
local target="${1}"
local line name
while IFS= read -r line; do
name="$(echo "${line}" | awk "{print \$1}")"
if [ "${name}" = "${target}" ]; then
echo "${line}" |
awk "{print \$2}"
fi
done <<EOF
${_rwx_code_commands_functions}
EOF
}
# show the cached aliases and functions
#= rcaf
rwx_code_aliases_functions() {
echo "${_rwx_code_aliases_functions}"
}
# show the cached binaries
rwx_code_binaries() {
echo "${_rwx_code_binaries}"
}
# show the cached commands
rwx_code_commands() {
echo "${_rwx_code_commands}"
}
# show the cached commands and functions
#= rccf
rwx_code_commands_functions() {
echo "${_rwx_code_commands_functions}"
}
# show the cached constants
#= rcc
rwx_code_constants() {
@ -170,10 +200,8 @@ rwx_code_doc() {
}
rwx_code_load() {
# parse aliases
_rwx_code_aliases="$(rwx_code_parse "aliases")"
# parse aliases functions
local line text
# parse aliases functions
_rwx_code_aliases_functions="$(rwx_code_parse "aliases functions")"
while IFS= read -r line; do
text="$(echo "${line}" | sed "s| |() { |")"
@ -182,6 +210,19 @@ rwx_code_load() {
done <<EOF
${_rwx_code_aliases_functions}
EOF
# parse commands functions
_rwx_code_commands_functions="$(rwx_code_parse "commands functions")"
while IFS= read -r line; do
text="$(echo "${line}" | sed "s| |() { |")"
text="${text} \"\${@}\"; }"
eval "${text}"
done <<EOF
${_rwx_code_commands_functions}
EOF
# parse aliases
_rwx_code_aliases="$(rwx_code_parse "aliases")"
# parse binaries
_rwx_code_binaries="$(rwx_code_parse "binaries")"
# parse commands
_rwx_code_commands="$(rwx_code_parse "commands")"
# parse constants
@ -222,7 +263,7 @@ rwx_code_main() {
if [ -n "${command}" ]; then
local function
# find the matching function
function="$(rwx_code_alias_function "${command}")"
function="$(rwx_code_command_function "${command}")"
if [ -n "${function}" ]; then
"${function}" "${@}"
fi

View file

@ -22,7 +22,8 @@ rwx_test_code() {
"functions" \
"aliases" \
"aliases_functions" \
"commands"
"commands" \
"commands_functions"
rwx_code
for items in "${@}"; do
echo