diff --git a/readme.md b/readme.md index e78c221..532211c 100644 --- a/readme.md +++ b/readme.md @@ -115,19 +115,7 @@ Two interpreted languages for flexibility. * ffmpeg * tmux * get unresolved path for new panes & windows -* source code - * doc parsing algorithm - * install commands - * remove existing before - * test required - * binaries - * modules - * handle dependencies - * binaries - * modules - * handle tasks - * readme.md / when - * FIXME - * TODO +* fully working doc function algorithm +* self install aliases ### 6.2 [Further tasks](#when) {#when-further} diff --git a/sh/code.sh b/sh/code.sh index 76881b1..de4b331 100644 --- a/sh/code.sh +++ b/sh/code.sh @@ -6,12 +6,6 @@ # │ code │ variables │ # ╰──────┴───────────╯ -# TODO variablize -# path to the entrypoint main file of the project -RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}" -# user root directory of the project -RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}" - # cache for the parsing awk script _rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")" # cache for code aliases @@ -27,18 +21,6 @@ _rwx_code_functions="" # cache for code variables _rwx_code_variables="" -# ╭──────┬──────╮ -# │ code │ help │ -# ╰──────┴──────╯ - -# output help message -rwx_code_help() { - rwx_log \ - "rwx_… = functions" \ - " a__… = aliases" \ - " u__… = user" -} - # ╭──────┬─────────╮ # │ code │ install │ # ╰──────┴─────────╯ @@ -199,40 +181,3 @@ rwx_code_parse() { --assign action="${action}" \ "${_rwx_code_awk}" } - -# ╭──────┬──────╮ -# │ code │ main │ -# ╰──────┴──────╯ - -rwx_code_main() { - # source user root - rwx_main_source "${RWX_SELF_USER}" - # load code cache - rwx_code_load - # set command - local command - # command name used to run - # (stripped from hyphen interactive flag) - command="$(basename "${0}" | sed "s|^-||")" - case "${command}" in - "bash" | "dash" | "sh") unset command ;; - *) ;; - esac - # context / command - if [ -n "${command}" ]; then - local function - # find the matching function - function="$(rwx_code_alias_function "${command}")" - if [ -n "${function}" ]; then - "${function}" "${@}" - fi - # context / shell - else - # run interactive extras - if rwx_shell_interactive; then - # help - rwx_log - rwx_code_help - fi - fi -} diff --git a/sh/crypt.sh b/sh/cryptsetup.sh similarity index 86% rename from sh/crypt.sh rename to sh/cryptsetup.sh index c493adf..fd20a64 100644 --- a/sh/crypt.sh +++ b/sh/cryptsetup.sh @@ -1,20 +1,8 @@ -# ╭───────╮ -# │ crypt │ -# ╰───────╯ +_rwx_cmd_cs() { rwx_crypt "${@}"; } -# ╭───────┬───────────╮ -# │ crypt │ constants │ -# ╰───────┴───────────╯ - -# TODO variablize RWX_CRYPT_ROOT="/data/home/user/crypt" RWX_CRYPT_VAR="/var/lib/crypt" -# ╭───────┬───────────╮ -# │ crypt │ functions │ -# ╰───────┴───────────╯ - -#| cat rwx_crypt_device() { local device size local index=0 @@ -37,17 +25,7 @@ rwx_crypt_device() { fi } -#| id -#| mkdir -#| qemu-nbd -#| cryptsetup -#| mount -#| umount -#| rmdir -#| cat -#| rm -#/ cs -rwx_crypt_setup() { +rwx_crypt() { local action="${1}" local action_close="close" local action_open="open" diff --git a/sh/ffmpeg.sh b/sh/ffmpeg.sh index 529d6ba..c32ad06 100644 --- a/sh/ffmpeg.sh +++ b/sh/ffmpeg.sh @@ -1,12 +1,8 @@ -# ╭────────╮ -# │ ffmpeg │ -# ╰────────╯ - # ╭────────┬─────────┬───────╮ # │ ffmpeg │ devices │ reset │ # ╰────────┴─────────┴───────╯ -#/ rwx_ffmpeg_devices_reset +_rwx_cmd_rwx_ffmpeg_devices_reset() { rwx_ffmpeg_devices_reset "${@}"; } rwx_ffmpeg_devices_reset() { local module="uvcvideo" modprobe --remove "${module}" && diff --git a/sh/log/log.sh b/sh/log/log.sh index f5e13b1..a3013e8 100644 --- a/sh/log/log.sh +++ b/sh/log/log.sh @@ -76,9 +76,9 @@ _rwx_log() { local line for line in "${@}"; do if [ -n "${prefix}" ]; then - _rwx_main_log "${prefix} ${line}" + __rwx_log "${prefix} ${line}" else - _rwx_main_log "${line}" + __rwx_log "${line}" fi done } diff --git a/sh/main.sh b/sh/main.sh index f89ee47..62a5bfc 100755 --- a/sh/main.sh +++ b/sh/main.sh @@ -3,6 +3,15 @@ # │ main │ # ╰──────╯ # main module +# * builtins +# * echo +# * printf +# * read +# * binaries +# * awk +# * cat +# * find +# * sed # ╭──────┬───────────╮ # │ main │ constants │ @@ -20,17 +29,21 @@ RWX_SELF_NAME="rwx" # cache of all sourced code modules _rwx_code="" -# TODO variablize # system root directory of the project RWX_ROOT_SYSTEM="/usr/local/lib/${RWX_SELF_NAME}" +# user root directory of the project +RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}" + +# path to the entrypoint main file of the project +RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}" # ╭──────┬──────╮ # │ main │ find │ # ╰──────┴──────╯ # find directory’s files by extension -#| find -#| sort +#> find +#> sort rwx_find_extension() { local extension="${1}" local root="${2}" @@ -69,7 +82,7 @@ rwx_shell_interactive() { # │ main │ log │ # ╰──────┴─────╯ -_rwx_main_log() { +__rwx_log() { if rwx_shell_interactive; then [ ${#} -gt 0 ] || set -- "" local line @@ -83,24 +96,24 @@ _rwx_main_log() { # │ main │ source │ # ╰──────┴────────╯ -# source code from root path but file -rwx_main_source() { +# source code from file path +rwx_source() { local root="${1}" [ -d "${root}" ] || return 1 local file="${2}" local count module modules count=0 - _rwx_main_log "" \ + __rwx_log "" \ ". ${root}" modules="$(rwx_find_shell "${root}" "${file}")" while IFS= read -r module; do count=$((count + 1)) - _rwx_main_log "$(printf "%02d" "${count}") ${module%.sh}" + __rwx_log "$(printf "%02d" "${count}") ${module%.sh}" # shellcheck disable=SC1090 . "${root}/${module}" # cache code - rwx_main_cache "${root}" "${module}" + rwx_cache "${root}" "${module}" done < cat +rwx_cache() { local root="${1}" local module="${2}" local name="${module%.sh}" @@ -132,18 +145,43 @@ ${text} # ╰──────┴──────╯ # run initial steps -#< code -rwx_main_main() { +rwx_main() { # cache main - rwx_main_cache "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}" + rwx_cache "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}" # source system root - if ! rwx_main_source "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"; then - _rwx_main_log "Not a directory: ${RWX_ROOT_SYSTEM}" + if ! rwx_source "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"; then + __rwx_log "Not a directory: ${RWX_ROOT_SYSTEM}" return 1 fi - # run code main function - rwx_code_main "${@}" + # source user root + rwx_source "${RWX_SELF_USER}" + # load code cache + rwx_code_load + # context / command + local command + # command name used to run + # (stripped from hyphen interactive flag) + command="$(basename "${0}" | sed "s|^-||")" + case "${command}" in + "bash" | "dash" | "sh") unset command ;; + *) ;; + esac + if [ -n "${command}" ]; then + local function + # find the matching function + function="$(rwx_code_alias_function "${command}")" + if [ -n "${function}" ]; then + "${function}" "${@}" + fi + # context / shell + else + rwx_self_init + fi } +# ╭──────┬─────╮ +# │ main │ run │ +# ╰──────┴─────╯ + # run main function -rwx_main_main "${@}" +rwx_main "${@}" diff --git a/sh/self.sh b/sh/self.sh index 76424f3..968c44b 100644 --- a/sh/self.sh +++ b/sh/self.sh @@ -2,11 +2,35 @@ # │ self │ # ╰──────╯ +# ╭──────┬──────╮ +# │ self │ help │ +# ╰──────┴──────╯ + +# output help message +rwx_self_help() { + rwx_log \ + "rwx_… = functions" \ + " a__… = aliases" \ + " u__… = user" +} + +# ╭──────┬──────╮ +# │ self │ init │ +# ╰──────┴──────╯ + +rwx_self_init() { + # run interactive extras + if rwx_shell_interactive; then + # help + rwx_log + rwx_self_help + fi +} + # ╭──────┬────────╮ # │ self │ subset │ # ╰──────┴────────╯ -# TODO move to code module rwx_self_subset() { local argument file root for argument in "${@}"; do @@ -27,7 +51,6 @@ rwx_self_subset() { # │ self │ write │ # ╰──────┴───────╯ -# TODO move to code module rwx_self_write() { local target="${1}" if [ -n "${target}" ]; then diff --git a/sh/shell/bash.sh b/sh/shell/bash.sh index 2f5d2d8..20529c0 100644 --- a/sh/shell/bash.sh +++ b/sh/shell/bash.sh @@ -4,10 +4,9 @@ # based on currently running shell case "${RWX_SHELL}" in -# continue if it can handle it -"bash") ;; -# otherwise skip incorrect names to come -*) return ;; + "bash") ;; + # skip illegal syntax to come + *) return ;; esac # shellcheck disable=SC3033 diff --git a/sh/test.sh b/sh/test.sh index 188319e..ad17c22 100644 --- a/sh/test.sh +++ b/sh/test.sh @@ -44,7 +44,7 @@ rwx_test_doc() { \ "_rwx_code" \ \ - "rwx_main_cache" \ + "rwx_cache" \ \ "alias/batcat" \ "b" \ diff --git a/sh/tmux.sh b/sh/tmux.sh index bd72c21..9213e01 100644 --- a/sh/tmux.sh +++ b/sh/tmux.sh @@ -36,7 +36,7 @@ rwx_tmux_list() { # │ tmux │ setup │ # ╰──────┴───────╯ -#/ rwx_tmux_setup +_rwx_cmd_rwx_tmux_setup() { rwx_tmux_setup "${@}"; } rwx_tmux_setup() { local file script if rwx_root; then