Compare commits

...

9 commits

Author SHA1 Message Date
99de96a393
main/extension
All checks were successful
/ job (push) Successful in 2m57s
2025-07-09 02:20:50 +02:00
0593181f10
lint 2025-07-09 02:10:12 +02:00
e060c18949
simplify 2025-07-09 02:04:14 +02:00
222972b6df
main/find 2025-07-09 01:04:59 +02:00
048f41cd05
code/help 2025-07-09 00:39:58 +02:00
c11edc243f
main/interactive 2025-07-09 00:18:57 +02:00
e9b57b693c
−useless 2025-07-08 23:43:35 +02:00
bf0e3943d8
core/code 2025-07-08 22:14:07 +02:00
71a1ba6516
core/code 2025-07-08 22:13:38 +02:00
5 changed files with 42 additions and 53 deletions

View file

@ -8,12 +8,12 @@
# TODO variablize # TODO variablize
# path to the entrypoint main file of the project # path to the entrypoint main file of the project
RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}" RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}.${RWX_MAIN_EXTENSION}"
# user root directory of the project # user root directory of the project
RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}" RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}"
# cache for the parsing awk script # cache for the parsing awk script
_rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")" _rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/core/code.awk")"
# cache for code aliases # cache for code aliases
_rwx_code_aliases="" _rwx_code_aliases=""
# cache for code aliases functions # cache for code aliases functions
@ -37,7 +37,7 @@ _rwx_code_variables=""
# output help message # output help message
rwx_code_help() { rwx_code_help() {
rwx_log \ rwx_log "" \
"rwx_… = functions" \ "rwx_… = functions" \
" a__… = aliases" \ " a__… = aliases" \
" u__… = user" " u__… = user"
@ -59,7 +59,7 @@ rwx_code_install() {
fi fi
# commands # commands
root="${target}/usr/local/bin" root="${target}/usr/local/bin"
name="${RWX_SELF_NAME}.sh" name="${RWX_SELF_NAME}.${RWX_MAIN_EXTENSION}"
file="${root}/${name}" file="${root}/${name}"
rwx_remove "${file}" rwx_remove "${file}"
rwx_link "${file}" "${RWX_MAIN_PATH}" rwx_link "${file}" "${RWX_MAIN_PATH}"
@ -71,7 +71,7 @@ rwx_code_install() {
${_rwx_code_commands} ${_rwx_code_commands}
EOF EOF
# sh # sh
file="${target}/etc/profile.d/${RWX_SELF_NAME}.sh" file="${target}/etc/profile.d/${RWX_SELF_NAME}.${RWX_MAIN_EXTENSION}"
rwx_remove "${file}" rwx_remove "${file}"
rwx_file_write "${file}" "\ rwx_file_write "${file}" "\
export ENV=\"${RWX_MAIN_PATH}\" export ENV=\"${RWX_MAIN_PATH}\"
@ -181,7 +181,7 @@ rwx_code_doc() {
} }
rwx_code_load() { rwx_code_load() {
local line text local line
# parse aliases functions # parse aliases functions
_rwx_code_aliases_functions="$(rwx_code_parse "aliases functions")" _rwx_code_aliases_functions="$(rwx_code_parse "aliases functions")"
while IFS= read -r line; do while IFS= read -r line; do
@ -246,11 +246,7 @@ rwx_code_main() {
fi fi
# context / shell # context / shell
else else
# run interactive extras # display help
if rwx_shell_interactive; then rwx_code_help
# help
rwx_log
rwx_code_help
fi
fi fi
} }

View file

@ -2,9 +2,9 @@ rwx_shellcheck() {
local root="${1}" local root="${1}"
local file module modules path local file module modules path
file="$(mktemp)" file="$(mktemp)"
modules="$(rwx_find_shell "${root}")" modules="$(rwx_main_find "${root}")"
while IFS= read -r module; do while IFS= read -r module; do
path="${root}/${module}" path="${root}/${module}.${RWX_MAIN_EXTENSION}"
echo ". \"${path}\"" >>"${file}" echo ". \"${path}\"" >>"${file}"
done <<EOF done <<EOF
${modules} ${modules}

View file

@ -8,8 +8,11 @@
# │ main │ constants │ # │ main │ constants │
# ╰──────┴───────────╯ # ╰──────┴───────────╯
# name of the entrypoint file # extension of shell modules
RWX_MAIN_NAME="main.sh" RWX_MAIN_EXTENSION="sh"
# name of the entrypoint module
RWX_MAIN_NAME="main"
# name of the project itself # name of the project itself
RWX_SELF_NAME="rwx" RWX_SELF_NAME="rwx"
@ -28,37 +31,27 @@ RWX_ROOT_SYSTEM="/usr/local/lib/${RWX_SELF_NAME}"
# │ main │ find │ # │ main │ find │
# ╰──────┴──────╯ # ╰──────┴──────╯
# find directory’s files by extension # find directory’s shell files
#| find #| find
#| sed
#| sort #| sort
rwx_find_extension() { rwx_main_find() {
local extension="${1}" local root="${1}"
local root="${2}" find \
local file="${3}"
set -- \
"${root}" \ "${root}" \
-name "*.${extension}" \ -name "*.${RWX_MAIN_EXTENSION}" \
-type "f" -type "f" \
[ -n "${file}" ] &&
set -- "${@}" \
-not \
-name "${file}"
find "${@}" \
-printf "%P\n" | -printf "%P\n" |
sed "s|\\.[^.]*\$||" |
sort sort
} }
# find directory’s sh files
rwx_find_shell() {
rwx_find_extension "sh" "${@}"
}
# ╭──────┬───────╮ # ╭──────┬───────╮
# │ main │ shell │ # │ main │ shell │
# ╰──────┴───────╯ # ╰──────┴───────╯
# test if active shell is in interactive mode # test if active shell is in interactive mode
rwx_shell_interactive() { rwx_main_interactive() {
case "${-}" in case "${-}" in
*i*) ;; *i*) ;;
*) return 1 ;; *) return 1 ;;
@ -70,7 +63,7 @@ rwx_shell_interactive() {
# ╰──────┴─────╯ # ╰──────┴─────╯
_rwx_main_log() { _rwx_main_log() {
if rwx_shell_interactive; then if rwx_main_interactive; then
[ ${#} -gt 0 ] || set -- "" [ ${#} -gt 0 ] || set -- ""
local line local line
for line in "${@}"; do for line in "${@}"; do
@ -83,24 +76,25 @@ _rwx_main_log() {
# │ main │ source │ # │ main │ source │
# ╰──────┴────────╯ # ╰──────┴────────╯
# source code from root path but file # source code from root path
rwx_main_source() { rwx_main_source() {
local root="${1}" local root="${1}"
[ -d "${root}" ] || [ -d "${root}" ] ||
return 1 return 1
local file="${2}"
local count module modules local count module modules
count=0 count=0
_rwx_main_log "" \ _rwx_main_log "" \
". ${root}" ". ${root}"
modules="$(rwx_find_shell "${root}" "${file}")" modules="$(rwx_main_find "${root}")"
while IFS= read -r module; do while IFS= read -r module; do
count=$((count + 1)) if [ "${module}" != "${RWX_MAIN_NAME}" ]; then
_rwx_main_log "$(printf "%02d" "${count}") ${module%.sh}" count=$((count + 1))
# shellcheck disable=SC1090 _rwx_main_log "$(printf "%02d" "${count}") ${module}"
. "${root}/${module}" # shellcheck disable=SC1090
# cache code . "${root}/${module}.${RWX_MAIN_EXTENSION}"
rwx_main_cache "${root}" "${module}" # cache code
rwx_main_cache "${root}" "${module}"
fi
done <<EOF done <<EOF
${modules} ${modules}
EOF EOF
@ -116,13 +110,12 @@ EOF
rwx_main_cache() { rwx_main_cache() {
local root="${1}" local root="${1}"
local module="${2}" local module="${2}"
local name="${module%.sh}" local path="${root}/${module}.${RWX_MAIN_EXTENSION}"
local path="${root}/${module}"
local text local text
text="$(cat "${path}")" text="$(cat "${path}")"
# all source code # all source code
_rwx_code="${_rwx_code}\ _rwx_code="${_rwx_code}\
#. ${name} #. ${module}
${text} ${text}
" "
} }
@ -132,12 +125,12 @@ ${text}
# ╰──────┴──────╯ # ╰──────┴──────╯
# run initial steps # run initial steps
#< code #< core/code
rwx_main_main() { rwx_main_main() {
# cache main # cache main
rwx_main_cache "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}" rwx_main_cache "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"
# source system root # source system root
if ! rwx_main_source "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"; then if ! rwx_main_source "${RWX_ROOT_SYSTEM}"; then
_rwx_main_log "Not a directory: ${RWX_ROOT_SYSTEM}" _rwx_main_log "Not a directory: ${RWX_ROOT_SYSTEM}"
return 1 return 1
fi fi

View file

@ -11,11 +11,11 @@ rwx_self_subset() {
local argument file root local argument file root
for argument in "${@}"; do for argument in "${@}"; do
root="${RWX_ROOT_SYSTEM}/${argument}" root="${RWX_ROOT_SYSTEM}/${argument}"
file="${argument}.sh" file="${argument}.${RWX_MAIN_EXTENSION}"
if [ -d "${root}" ]; then if [ -d "${root}" ]; then
local file local file
for file in $(rwx_find_shell "${root}"); do for file in $(rwx_main_find "${root}"); do
echo "${argument}/${file}" echo "${argument}/${file}.${RWX_MAIN_EXTENSION}"
done done
elif [ -f "${RWX_ROOT_SYSTEM}/${file}" ]; then elif [ -f "${RWX_ROOT_SYSTEM}/${file}" ]; then
echo "${file}" echo "${file}"