From d377bcea37333098d3feb39a83e761d014bd40c1 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 00:12:37 +0200 Subject: [PATCH 01/11] doc/awk --- sh/self.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sh/self.sh b/sh/self.sh index c181112..ac2382f 100644 --- a/sh/self.sh +++ b/sh/self.sh @@ -2,6 +2,15 @@ # meta doc rwx_doc() { + local name="${1}" + [ -n "${name}" ] || return + printf "%s" "${RWX_CODE}" | + awk \ + -f "${RWX_ROOT_SYSTEM}/doc.awk" \ + -v target="${name}" +} + +rwx_doc_old() { local name="${1}" [ -n "${name}" ] || return local constant doc func line module From 96ea65e3da3bee544c398fff678068c93c7a0e4a Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 00:13:08 +0200 Subject: [PATCH 02/11] doc.awk --- sh/doc.awk | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sh/doc.awk diff --git a/sh/doc.awk b/sh/doc.awk new file mode 100644 index 0000000..e69de29 From 3216f11da0db71b9b6b1ad06602e004f7a105384 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 03:16:41 +0200 Subject: [PATCH 03/11] attempt from scratch --- sh/doc.awk | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ sh/main.sh | 1 + sh/self.sh | 3 ++- 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/sh/doc.awk b/sh/doc.awk index e69de29..c2cb5b8 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -0,0 +1,73 @@ +function append(line) { + if (doc) { + doc = doc "\n" + } + doc = doc line +} + +function output(name) { + print name + print "↓" + print doc + exit +} + +function reset() { + doc = "" +} + +BEGIN { + RE_ANY = "(.*)" + RE_NAME = "([_A-Za-z][_0-9A-Za-z]*)" + RE_SPACE = "[[:space:]]" + RE_SPACES = RE_SPACE "*" + + RE_BEGIN = "^" + RE_END = RE_SPACES "$" + RE_FUNC = RE_SPACES "\\(" RE_SPACES "\\)" RE_SPACES "{" + + RE_ALIAS = RE_BEGIN "#\\(" RE_SPACES RE_NAME RE_END + RE_DOC = RE_BEGIN "#" RE_SPACE RE_ANY RE_END + RE_FUNCTION = RE_BEGIN RE_NAME RE_FUNC RE_END + RE_MODULE = RE_BEGIN "#." RE_SPACES RE_NAME RE_END + RE_SET = RE_BEGIN RE_NAME "=.*" RE_END + RE_SHEBANG = RE_BEGIN "#!" RE_SPACES RE_ANY RE_END + + alias = 0 + reset() + module = 0 +} + +{ + if (match($0, RE_MODULE, m)) { + reset() + if (m[1] == target) { + module = 1 + } + } else if (match($0, RE_SHEBANG, m)) { + append(m[1]) + } else if (match($0, RE_DOC, m)) { + append(m[1]) + } else if (match($0, RE_SET, m)) { + if (m[1] == target) { + output(m[1]) + } else { + reset() + } + } else if (match($0, RE_ALIAS, m)) { + if (m[1] == target) { + alias = 1 + } + append(m[1]) + } else if (match($0, RE_FUNCTION, m)) { + if (alias) { + output(m[1]) + } else if (m[1] == target) { + output(m[1]) + } else { + reset() + } + } else { + reset() + } +} diff --git a/sh/main.sh b/sh/main.sh index 343cbe3..d4ad2e2 100755 --- a/sh/main.sh +++ b/sh/main.sh @@ -64,6 +64,7 @@ rwx_main() { # ╰──────┴───────╯ # cache source code of a module +# inside a global code variable rwx_cache() { local root="${1}" local module="${2}" diff --git a/sh/self.sh b/sh/self.sh index ac2382f..169921a 100644 --- a/sh/self.sh +++ b/sh/self.sh @@ -1,4 +1,5 @@ -# self module +# self +# module # meta doc rwx_doc() { From 918ed255f7ce2027358584bc090d63a58fb49a43 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 03:24:23 +0200 Subject: [PATCH 04/11] fix --- sh/doc.awk | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sh/doc.awk b/sh/doc.awk index c2cb5b8..68df6fa 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -68,6 +68,10 @@ BEGIN { reset() } } else { - reset() + if (module) { + output(target) + } else { + reset() + } } } From beb3025828c5298b12c925ee5ddc4116a7c8b916 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 03:53:18 +0200 Subject: [PATCH 05/11] rejigger --- sh/doc.awk | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/sh/doc.awk b/sh/doc.awk index 68df6fa..edf2455 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -39,31 +39,33 @@ BEGIN { } { - if (match($0, RE_MODULE, m)) { + # doc + if (match($0, RE_SHEBANG, m)) { + append(m[1]) + } else if (match($0, RE_DOC, m)) { + append(m[1]) + } else if (match($0, RE_ALIAS, m)) { + append(m[1]) + if (m[1] == target) { + alias = 1 + } + # not doc + } else if (match($0, RE_MODULE, m)) { reset() if (m[1] == target) { module = 1 } - } else if (match($0, RE_SHEBANG, m)) { - append(m[1]) - } else if (match($0, RE_DOC, m)) { - append(m[1]) } else if (match($0, RE_SET, m)) { if (m[1] == target) { output(m[1]) } else { reset() } - } else if (match($0, RE_ALIAS, m)) { - if (m[1] == target) { - alias = 1 - } - append(m[1]) } else if (match($0, RE_FUNCTION, m)) { if (alias) { - output(m[1]) + output(target) } else if (m[1] == target) { - output(m[1]) + output(target) } else { reset() } From ad235af38fd8e1cd9706d5544a3939248c66f70a Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 03:57:29 +0200 Subject: [PATCH 06/11] "" --- sh/doc.awk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sh/doc.awk b/sh/doc.awk index edf2455..dd019ee 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -7,7 +7,7 @@ function append(line) { function output(name) { print name - print "↓" + print "" print doc exit } From ec9907d4504c23608dfdf16282c2dd1fee5ff04b Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 04:11:06 +0200 Subject: [PATCH 07/11] main/test --- sh/doc.awk | 1 - sh/main.sh | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/sh/doc.awk b/sh/doc.awk index dd019ee..ad2132d 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -7,7 +7,6 @@ function append(line) { function output(name) { print name - print "" print doc exit } diff --git a/sh/main.sh b/sh/main.sh index d4ad2e2..5e7de9e 100755 --- a/sh/main.sh +++ b/sh/main.sh @@ -194,6 +194,31 @@ rwx_parse_functions() { sed --silent "s|${RWX_REGEX_TARGET_FUNCTION}|\\1|p" } +# ╭──────┬──────╮ +# │ main │ test │ +# ╰──────┴──────╯ + +rwx_test() { + local item + # TODO CODE + # TODO CONSTANTS + # TODO functions + # TODO variables + set \ + "main" \ + "self" \ + \ + "RWX_MAIN_NAME" \ + \ + "rwx_cache" \ + \ + "gsc" + for item in "${@}"; do + echo + rwx_doc "${item}" + done +} + # ╭──────┬─────╮ # │ main │ run │ # ╰──────┴─────╯ From d367548c08a658d37c4003a05bf4d5ff0f706746 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 04:21:03 +0200 Subject: [PATCH 08/11] types --- sh/doc.awk | 4 ++++ sh/main.sh | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/sh/doc.awk b/sh/doc.awk index ad2132d..fcfc317 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -56,20 +56,24 @@ BEGIN { } } else if (match($0, RE_SET, m)) { if (m[1] == target) { + print "set" output(m[1]) } else { reset() } } else if (match($0, RE_FUNCTION, m)) { if (alias) { + print "alias" output(target) } else if (m[1] == target) { + print "function" output(target) } else { reset() } } else { if (module) { + print "module" output(target) } else { reset() diff --git a/sh/main.sh b/sh/main.sh index 5e7de9e..fb323d8 100755 --- a/sh/main.sh +++ b/sh/main.sh @@ -1,9 +1,8 @@ #! /usr/bin/env sh -# main module - # ╭──────╮ # │ main │ # ╰──────╯ +# main module # ╭──────┬───────────╮ # │ main │ constants │ @@ -11,8 +10,10 @@ # name of the entrypoint file RWX_MAIN_NAME="main.sh" +# name of the project itself RWX_SELF_NAME="rwx" +# prefix for command functions RWX_SELF_COMMAND="_${RWX_SELF_NAME}_cmd_" # ╭──────┬───────────╮ From bb787cc0cce83cbe978cf7d14f8ac16014238474 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 04:33:32 +0200 Subject: [PATCH 09/11] doc/alias --- sh/doc.awk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sh/doc.awk b/sh/doc.awk index fcfc317..ad3360e 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -44,7 +44,7 @@ BEGIN { } else if (match($0, RE_DOC, m)) { append(m[1]) } else if (match($0, RE_ALIAS, m)) { - append(m[1]) + append("alias: " m[1]) if (m[1] == target) { alias = 1 } From 96bf706e3295622bfe7c9d8b377600fe9cd1a3d6 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 04:40:46 +0200 Subject: [PATCH 10/11] alias,printf --- sh/doc.awk | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sh/doc.awk b/sh/doc.awk index ad3360e..a6920b4 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -56,24 +56,25 @@ BEGIN { } } else if (match($0, RE_SET, m)) { if (m[1] == target) { - print "set" + printf "set: " output(m[1]) } else { reset() } } else if (match($0, RE_FUNCTION, m)) { if (alias) { - print "alias" - output(target) + print "alias: " target + printf "function: " + output(m[1]) } else if (m[1] == target) { - print "function" + printf "function: " output(target) } else { reset() } } else { if (module) { - print "module" + printf "module: " output(target) } else { reset() From b0afca09a56e3046a2e218911eb1efac7190959e Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 04:43:37 +0200 Subject: [PATCH 11/11] shebang --- sh/doc.awk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sh/doc.awk b/sh/doc.awk index a6920b4..f36b7b6 100644 --- a/sh/doc.awk +++ b/sh/doc.awk @@ -40,7 +40,7 @@ BEGIN { { # doc if (match($0, RE_SHEBANG, m)) { - append(m[1]) + append("shebang: " m[1]) } else if (match($0, RE_DOC, m)) { append(m[1]) } else if (match($0, RE_ALIAS, m)) {