diff --git a/sh/log.sh b/sh/log/log.sh similarity index 100% rename from sh/log.sh rename to sh/log/log.sh diff --git a/sh/log/step.sh b/sh/log/step.sh new file mode 100644 index 0000000..34a5c64 --- /dev/null +++ b/sh/log/step.sh @@ -0,0 +1,25 @@ +# ╭───────────────╮ +# │ __ = internal │ +# ╰───────────────╯ + +# __RWX_BAR_TOP +# __RWX_BAR_MIDDLE +# __RWX_BAR_BOTTOM + +# __RWX_STEP_LEVEL +# __RWX_STEP_level_INDEX +# __RWX_STEP_level_LABEL + +# ╭─────────────╮ +# │ _ = private │ +# ╰─────────────╯ + +_RWX_BOX_DOWN_AND_HORIZONTAL="┬" +_RWX_BOX_DOWN_AND_LEFT="╮" +_RWX_BOX_DOWN_AND_RIGHT="╭" +_RWX_BOX_HORIZONTAL="─" +_RWX_BOX_LEFT="╴" +_RWX_BOX_UP_AND_HORIZONTAL="┴" +_RWX_BOX_UP_AND_LEFT="╯" +_RWX_BOX_UP_AND_RIGHT="╰" +_RWX_BOX_VERTICAL="│" diff --git a/sh/main.sh b/sh/main.sh index 2d729f3..802418f 100755 --- a/sh/main.sh +++ b/sh/main.sh @@ -1,27 +1,35 @@ #! /usr/bin/env sh -# ╭───────────╮ -# │ constants │ -# ╰───────────╯ +# ╭──────┬───────────╮ +# │ main │ constants │ +# ╰──────┴───────────╯ RWX_MAIN_NAME="main.sh" RWX_SELF_NAME="rwx" RWX_SELF_COMMAND="_${RWX_SELF_NAME}_cmd_" -# ╭───────────╮ -# │ variables │ -# ╰───────────╯ +# ╭──────┬───────────╮ +# │ main │ variables │ +# ╰──────┴───────────╯ +RWX_COMMAND_ARGUMENT="${0}" +RWX_SHELL="$(cat "/proc/${$}/comm")" + +RWX_COMMAND_NAME="$(basename "${RWX_COMMAND_ARGUMENT}" | + sed "s|^-||")" +case "${RWX_COMMAND_NAME}" in +"bash" | "dash" | "sh") unset RWX_COMMAND_NAME ;; +*) ;; +esac RWX_ROOT_SYSTEM="/usr/local/lib/${RWX_SELF_NAME}" RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}" -RWX_SHELL="$(cat "/proc/${$}/comm")" RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}" -# ╭──────╮ -# │ core │ -# ╰──────╯ +# ╭──────┬───────╮ +# │ main │ shell │ +# ╰──────┴───────╯ # test if active shell is in interactive mode rwx_shell_interactive() { @@ -32,7 +40,7 @@ rwx_shell_interactive() { } # ╭──────┬─────╮ -# │ core │ log │ +# │ main │ log │ # ╰──────┴─────╯ __rwx_log() { @@ -46,7 +54,7 @@ __rwx_log() { } # ╭──────┬──────╮ -# │ core │ find │ +# │ main │ find │ # ╰──────┴──────╯ # find directory’s files by extension @@ -73,7 +81,7 @@ rwx_find_shell() { } # ╭──────┬─────╮ -# │ core │ ifs │ +# │ main │ ifs │ # ╰──────┴─────╯ rwx_ifs_set() { @@ -88,20 +96,19 @@ rwx_ifs_unset() { } # ╭──────┬────────╮ -# │ core │ source │ +# │ main │ source │ # ╰──────┴────────╯ rwx_source() { local path="${1}" [ -d "${path}" ] || return 1 - local count module modules - modules="$(rwx_find_shell "${path}" "${RWX_MAIN_NAME}")" - rwx_ifs_set + local count module count=0 __rwx_log "" \ ". ${path}" - for module in ${modules}; do + rwx_ifs_set + for module in $(rwx_find_shell "${path}" "${RWX_MAIN_NAME}"); do count=$((count + 1)) __rwx_log "$(printf "%02d" "${count}") ${module%.sh}" module="${path}/${module}" @@ -111,9 +118,9 @@ rwx_source() { rwx_ifs_unset } -# ╭──────┬──────╮ -# │ core │ main │ -# ╰──────┴──────╯ +# ╭──────╮ +# │ main │ +# ╰──────╯ # run initial steps rwx_main() { @@ -124,33 +131,13 @@ rwx_main() { fi # user root rwx_source "${RWX_SELF_USER}" - # - local argument - argument="$(echo "${0}" | sed "s|^-||")" - case "${argument}" in - "bash" | \ - "dash" | \ - "sh") - # run interactive extras - if rwx_shell_interactive; then - # check format - rwx_log - rwx_shfmt "${RWX_ROOT_SYSTEM}" - # check syntax - rwx_log - rwx_shellcheck "${RWX_ROOT_SYSTEM}" - # help - rwx_log - rwx_self_help - fi - ;; - *) - local function name - name="$(basename "${argument}")" - function="${RWX_SELF_COMMAND}${name}" - "${function}" "${@}" - ;; - esac + # context / command + if [ -n "${RWX_COMMAND_NAME}" ]; then + "${RWX_SELF_COMMAND}${RWX_COMMAND_NAME}" "${@}" + # context / shell + else + rwx_self_init + fi } # run main function diff --git a/sh/self.sh b/sh/self.sh index 41a2a0c..c6fad3b 100644 --- a/sh/self.sh +++ b/sh/self.sh @@ -1,3 +1,7 @@ +# ╭──────┬──────────╮ +# │ self │ commands │ +# ╰──────┴──────────╯ + # get commands from root rwx_self_commands() { grep \ @@ -8,6 +12,10 @@ rwx_self_commands() { sed "s|^${RWX_SELF_COMMAND}||" } +# ╭──────┬───────────╮ +# │ self │ functions │ +# ╰──────┴───────────╯ + # get functions from root rwx_self_functions() { grep \ @@ -17,6 +25,10 @@ rwx_self_functions() { cut --delimiter "(" --fields 1 } +# ╭──────┬──────╮ +# │ self │ help │ +# ╰──────┴──────╯ + # output help message rwx_self_help() { rwx_log \ @@ -25,6 +37,29 @@ rwx_self_help() { " u__… = user" } +# ╭──────┬──────╮ +# │ self │ init │ +# ╰──────┴──────╯ + +rwx_self_init() { + # run interactive extras + if rwx_shell_interactive; then + # check format + rwx_log + rwx_shfmt "${RWX_ROOT_SYSTEM}" + # check syntax + rwx_log + rwx_shellcheck "${RWX_ROOT_SYSTEM}" + # help + rwx_log + rwx_self_help + fi +} + +# ╭──────┬─────────╮ +# │ self │ install │ +# ╰──────┴─────────╯ + _rwx_cmd_rwx_install() { rwx_self_install "${@}"; } rwx_self_install() { local target="${1}" @@ -46,6 +81,10 @@ rwx_self_install() { rwx_link "${file}" "${RWX_MAIN_PATH}" } +# ╭──────┬────────╮ +# │ self │ subset │ +# ╰──────┴────────╯ + rwx_self_subset() { local argument path for argument in "${@}"; do @@ -61,6 +100,10 @@ rwx_self_subset() { done } +# ╭──────┬───────╮ +# │ self │ write │ +# ╰──────┴───────╯ + rwx_self_write() { local target="${1}" if [ -n "${target}" ]; then