Compare commits

...

22 commits

Author SHA1 Message Date
747d069449
−=
All checks were successful
/ job (push) Successful in 4m29s
2025-07-06 16:47:30 +02:00
44f415a8e8
eval/lint
Some checks failed
/ job (push) Has been cancelled
2025-07-06 16:44:31 +02:00
9327161e72
eval/oneline
Some checks failed
/ job (push) Has been cancelled
2025-07-06 16:42:12 +02:00
75487be90a
eval/shrink 2025-07-06 16:41:01 +02:00
c4b63c5de6
eval 2025-07-06 16:39:35 +02:00
5c5464d4ae
lint/uid
All checks were successful
/ job (push) Successful in 3m57s
2025-07-06 16:09:46 +02:00
249aa0b19c
lint/modules 2025-07-06 16:05:10 +02:00
de0dd93a71
lint/files 2025-07-06 16:03:46 +02:00
4b55ac1155
tabs 2025-07-06 16:02:10 +02:00
69e71ee1a3
-n 2025-07-06 15:59:31 +02:00
c21cbb1e98
tabs 2025-07-06 15:57:42 +02:00
715a13e871
−todo
All checks were successful
/ job (push) Successful in 3m57s
2025-07-06 15:53:19 +02:00
20bc9fc4fb
b 2025-07-06 15:38:06 +02:00
9910ad3942
b 2025-07-06 15:36:05 +02:00
513d09f797
gpg/gak,gau
All checks were successful
/ job (push) Successful in 3m56s
2025-07-06 15:32:43 +02:00
1d6a7bab9b
cache/variables 2025-07-06 11:02:50 +02:00
7c65fb2e25
rc,rcc,rd 2025-07-06 10:30:24 +02:00
58a0ca7c16
f/comments
All checks were successful
/ job (push) Successful in 4m27s
2025-07-06 10:20:52 +02:00
030beb5ebe
doc/spaces
Some checks failed
/ job (push) Has been cancelled
2025-07-06 10:18:18 +02:00
d0596131ca
close/algorithm
Some checks failed
/ job (push) Has been cancelled
2025-07-06 10:15:43 +02:00
b6c962abde
2025-07-06 09:49:00 +02:00
2b5fe88eee
close/useless 2025-07-06 09:47:16 +02:00
7 changed files with 108 additions and 54 deletions

View file

@ -1,4 +1,4 @@
b() { a__bat "${@}"; }
#= b
a__bat() {
batcat \
"${@}"

View file

@ -1,12 +0,0 @@
# turn gpg agent off
gak() { a__gpg_agent_kill "${@}"; }
a__gpg_agent_kill() {
gpgconf \
--kill "gpg-agent"
}
# bind gpg agent to current tty
gau() { a__gpg_agent_update "${@}"; }
a__gpg_agent_update() {
rwx_gpg_agent_update
}

View file

@ -1,4 +1,14 @@
# functions to handle gpg
# turn gpg agent off
#= gak
rwx_gpg_agent_kill() {
gpgconf \
--kill "gpg-agent"
}
# bind gpg agent to current tty
#= gau
rwx_gpg_agent_update() {
gpg-connect-agent \
updatestartuptty \

View file

@ -6,13 +6,16 @@ function append(line) {
}
function output(name, type) {
print name " ← " type
print "↙ " type
print name
print doc
exit
}
function reset() {
doc = ""
if (f == "") {
doc = ""
}
}
BEGIN {
@ -30,13 +33,14 @@ BEGIN {
RE_ALIAS = RE_BEGIN "#=" RE_SPACES RE_VAR RE_END
RE_CLOSE = RE_BEGIN "}" RE_SPACES RE_END
RE_CONSTANT = RE_BEGIN RE_CONST RE_SET RE_END
RE_DOC = RE_BEGIN "#" RE_SPACE RE_ANY RE_END
RE_DOC = RE_BEGIN RE_SPACES "#" RE_SPACE RE_ANY RE_END
RE_FUNCTION = RE_BEGIN RE_VAR RE_FUNC RE_END
RE_MODULE = RE_BEGIN "#." RE_SPACES RE_ANY RE_END
RE_SHEBANG = RE_BEGIN "#!" RE_SPACES RE_ANY RE_END
RE_VARIABLE = RE_BEGIN RE_VAR RE_SET RE_END
alias = 0
f = ""
reset()
module = 0
}
@ -48,7 +52,7 @@ BEGIN {
} else if (match($0, RE_FUNCTION, m)) {
n = split(doc, array, "\n")
for (i = 1; i<= n; i++) {
print array[i] " = " m[1]
print array[i] " " m[1]
}
reset()
} else {
@ -59,7 +63,11 @@ BEGIN {
if (match($0, RE_SHEBANG, m)) {
append("! " m[1])
} else if (match($0, RE_DOC, m)) {
append(m[1])
if (f) {
append($0)
} else {
append(m[1])
}
} else if (match($0, RE_ALIAS, m)) {
append("= " m[1])
if (m[1] == target) {
@ -85,12 +93,15 @@ BEGIN {
module = 1
}
} else if (match($0, RE_FUNCTION, m)) {
f = m[1]
} else if (match($0, RE_CLOSE, m)) {
if (alias) {
print "= " target
output(m[1], "function")
} else if (m[1] == target) {
output(target, "function")
output(f, "function")
} else if (f == target) {
output(f, "function")
} else {
f = ""
reset()
}
} else {

View file

@ -94,11 +94,11 @@ rwx_source() {
[ -d "${root}" ] ||
return 1
local file="${2}"
local count module
local count module modules
count=0
__rwx_log "" \
". ${root}"
local modules="$(rwx_find_shell "${root}" "${file}")"
modules="$(rwx_find_shell "${root}" "${file}")"
while IFS= read -r module; do
count=$((count + 1))
__rwx_log "$(printf "%02d" "${count}") ${module%.sh}"
@ -172,24 +172,32 @@ RWX_REGEX_CONSTANT="[_A-Z][_0-9A-Z]*"
RWX_REGEX_FUNCTION="[_A-Za-z][_0-9A-Za-z]*"
RWX_REGEX_SET="=.*"
RWX_REGEX_SPACES="[[:space:]]*"
RWX_REGEX_VARIABLE="[_a-z][_0-9a-z]*"
RWX_REGEX_BEGIN="^${RWX_REGEX_SPACES}"
RWX_REGEX_BEGIN="^"
RWX_REGEX_OPEN="\
${RWX_REGEX_SPACES}(${RWX_REGEX_SPACES})${RWX_REGEX_SPACES}{.*"
RWX_REGEX_TARGET_CONSTANT="\
${RWX_REGEX_BEGIN}\\(${RWX_REGEX_CONSTANT}\\)${RWX_REGEX_SET}"
RWX_REGEX_TARGET_DOC="\
${RWX_REGEX_BEGIN}# \\(.*\\)${RWX_REGEX_SPACES}\$"
${RWX_REGEX_BEGIN}${RWX_REGEX_SPACES}# \\(.*\\)${RWX_REGEX_SPACES}\$"
RWX_REGEX_TARGET_FUNCTION="\
${RWX_REGEX_BEGIN}\\(${RWX_REGEX_FUNCTION}\\)${RWX_REGEX_OPEN}"
RWX_REGEX_TARGET_VARIABLE="\
${RWX_REGEX_BEGIN}\\(${RWX_REGEX_VARIABLE}\\)${RWX_REGEX_SET}"
# cache for code variables
_rwx_code_variables=""
rwx_parse_code() {
# parse aliases
local line
local line text
RWX_ALIASES="$(rwx_parse_aliases)"
while IFS= read -r line; do
eval "${line/ = /() { } \"\${@}\"; }"
text="$(echo "${line}" | sed "s| |() { |")"
text="${text} \"\${@}\"; }"
eval "${text}"
done <<EOF
${RWX_ALIASES}
EOF
@ -197,6 +205,8 @@ EOF
RWX_CONSTANTS="$(rwx_parse_constants)"
# parse functions
RWX_FUNCTIONS="$(rwx_parse_functions)"
# parse variables
_rwx_code_variables="$(rwx_parse_variables)"
}
rwx_parse_aliases() {
printf "%s" "${_rwx_code}" |
@ -205,39 +215,41 @@ rwx_parse_aliases() {
--file "${RWX_AWK}"
}
rwx_parse_constants() {
printf "%s\n" "${_rwx_code}" |
printf "%s" "${_rwx_code}" |
sed --silent "s|${RWX_REGEX_TARGET_CONSTANT}|\\1|p"
}
rwx_parse_functions() {
printf "%s\n" "${_rwx_code}" |
printf "%s" "${_rwx_code}" |
sed --silent "s|${RWX_REGEX_TARGET_FUNCTION}|\\1|p"
}
rwx_parse_variables() {
printf "%s" "${_rwx_code}" |
sed --silent "s|${RWX_REGEX_TARGET_VARIABLE}|\\1|p"
}
# ╭──────┬──────╮
# │ main │ test │
# ╰──────┴──────╯
#= rt
rwx_test() {
local item
# TODO CODE
# TODO CONSTANTS
# TODO functions
# TODO variables
set \
"main" \
"alias/git" \
\
"RWX_MAIN_NAME" \
\
"_rwx_code" \
\
"rwx_cache" \
\
"gsc"
for item in "${@}"; do
echo
rwx_doc "${item}"
done
local item
set \
"main" \
"alias/git" \
\
"RWX_MAIN_NAME" \
\
"_rwx_code" \
\
"rwx_cache" \
\
"alias/batcat" \
"b"
for item in "${@}"; do
echo
rwx_doc "${item}"
done
}
# ╭──────┬─────╮

View file

@ -1,7 +1,38 @@
# self
# module
# show the cached code
#= rc
rwx_code() {
echo "${_rwx_code}"
}
# show the cached aliases
#= rca
rwx_code_aliases() {
echo "${RWX_ALIASES}"
}
# show the cached constants
#= rcc
rwx_code_constants() {
echo "${RWX_CONSTANTS}"
}
# show the cached functions
#= rcf
rwx_code_functions() {
echo "${RWX_FUNCTIONS}"
}
# show the cached variables
#= rcv
rwx_code_variables() {
echo "${_rwx_code_variables}"
}
# meta doc
#= rd
rwx_doc() {
local name="${1}"
[ -n "${name}" ] || return
@ -191,10 +222,10 @@ rwx_self_write() {
local target="${1}"
if [ -n "${target}" ]; then
shift
local file text
local file files text
text="#! /usr/bin/env sh
"
local files="$(rwx_self_subset "${@}")"
files="$(rwx_self_subset "${@}")"
while IFS= read -r file; do
text="${text}
$(cat "${RWX_ROOT_SYSTEM}/${file}")

View file

@ -6,7 +6,7 @@
#= tma
rwx_tmux_attach() {
local server="${1}"
if [ "${server}" ]; then
if [ -n "${server}" ]; then
tmux -L "${server}" attach-session
else
rwx_tmux_list
@ -17,7 +17,7 @@ rwx_tmux_attach() {
#= tmk
rwx_tmux_kill() {
local server="${1}"
if [ "${server}" ]; then
if [ -n "${server}" ]; then
tmux -L "${server}" kill-server 2>"/dev/null"
else
rwx_tmux_list
@ -27,7 +27,9 @@ rwx_tmux_kill() {
# list
#= tml
rwx_tmux_list() {
ls "/tmp/tmux-$(id --user)"
local user_id
user_id="$(id --user)"
ls "/tmp/tmux-${user_id}"
}
# ╭──────┬───────╮