# ╭──────╮ # │ code │ # ╰──────╯ # ╭──────┬───────────╮ # │ code │ variables │ # ╰──────┴───────────╯ # cache for the parsing awk script _rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")" # cache for code aliases _rwx_code_aliases="" # cache for code aliases functions _rwx_code_aliases_functions="" # cache for code constants _rwx_code_constants="" # cache for code functions _rwx_code_functions="" # cache for code variables _rwx_code_variables="" # ╭──────┬─────────╮ # │ code │ install │ # ╰──────┴─────────╯ #= rwx_install rwx_code_install() { local target="${1}" local command file name root # code if [ -n "${target}" ]; then root="${target}${RWX_ROOT_SYSTEM}" rwx_remove "${root}" cp --recursive "${RWX_ROOT_SYSTEM}" "${root}" fi # commands root="${target}/usr/local/bin" name="${RWX_SELF_NAME}.sh" file="${root}/${name}" rwx_remove "${file}" rwx_link "${file}" "${RWX_MAIN_PATH}" for command in $(rwx_self_commands); do file="${root}/${command}" rwx_remove "${file}" rwx_link "${file}" "${name}" done # sh file="${target}/etc/profile.d/${RWX_SELF_NAME}.sh" rwx_remove "${file}" rwx_file_write "${file}" "\ export ENV=\"${RWX_MAIN_PATH}\" " # bash file="${target}/etc/bash.bashrc" rwx_remove "${file}" rwx_link "${file}" "${RWX_MAIN_PATH}" } # ╭──────┬───────╮ # │ code │ parts │ # ╰──────┴───────╯ # show the cached code #= rc rwx_code() { echo "${_rwx_code}" } # show the cached awk script rwx_code_awk() { echo "${_rwx_code_awk}" } # show the cached aliases #= rca rwx_code_aliases() { echo "${_rwx_code_aliases}" } # show the cached aliases and functions #= rcaf rwx_code_aliases_functions() { echo "${_rwx_code_aliases_functions}" } # show the cached constants #= rcc rwx_code_constants() { echo "${_rwx_code_constants}" } # show the cached functions #= rcf rwx_code_functions() { echo "${_rwx_code_functions}" } # show the cached variables #= rcv rwx_code_variables() { echo "${_rwx_code_variables}" } # ╭──────┬───────╮ # │ code │ parse │ # ╰──────┴───────╯ # check source code rwx_code_check() { # check format rwx_log rwx_shfmt "${RWX_ROOT_SYSTEM}" # check syntax rwx_log rwx_shellcheck "${RWX_ROOT_SYSTEM}" } # fetch matching doc for given name #= rcd rwx_code_doc() { local name="${1}" [ -n "${name}" ] || return rwx_code | awk \ --assign action="doc" \ --assign target="${name}" \ "${_rwx_code_awk}" } rwx_code_load() { # parse aliases _rwx_code_aliases="$(rwx_code_parse "aliases")" # parse aliases functions local line text _rwx_code_aliases_functions="$(rwx_code_parse "aliases functions")" while IFS= read -r line; do text="$(echo "${line}" | sed "s| |() { |")" text="${text} \"\${@}\"; }" eval "${text}" done <