#! /usr/bin/env sh # ╭──────╮ # │ main │ # ╰──────╯ # main module # * builtins # * echo # * printf # * read # * binaries # * awk # * cat # * find # * sed # ╭──────┬───────────╮ # │ main │ constants │ # ╰──────┴───────────╯ # name of the entrypoint file RWX_MAIN_NAME="main.sh" # name of the project itself RWX_SELF_NAME="rwx" # ╭──────┬───────────╮ # │ main │ variables │ # ╰──────┴───────────╯ # cache of all sourced code modules _rwx_code="" # 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 │ 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_log "" \ ". ${root}" modules="$(rwx_find_shell "${root}" "${file}")" while IFS= read -r module; do count=$((count + 1)) __rwx_log "$(printf "%02d" "${count}") ${module%.sh}" # shellcheck disable=SC1090 . "${root}/${module}" # cache code rwx_cache "${root}" "${module}" done <