Compare commits

..

9 commits

Author SHA1 Message Date
01e6165788
self/init
All checks were successful
/ job (push) Successful in 1m15s
2024-12-02 15:24:27 +01:00
1eb130320e
context/command,shell 2024-12-02 15:07:55 +01:00
68ec08871c
command/argument,name 2024-12-02 04:02:26 +01:00
e60e72d1da
main 2024-12-02 03:22:30 +01:00
1681e1567f
2024-12-02 03:05:07 +01:00
3495d35051
modules 2024-12-02 01:53:34 +01:00
93d1cef6e3
step/box 2024-12-02 01:44:01 +01:00
8ad9ebc602
step/__ 2024-12-02 01:41:08 +01:00
240c0533ec
mv 2024-12-02 01:18:40 +01:00
4 changed files with 103 additions and 48 deletions

25
sh/log/step.sh Normal file
View file

@ -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="│"

View file

@ -1,27 +1,35 @@
#! /usr/bin/env sh #! /usr/bin/env sh
# ╭───────────╮ # ╭──────┬───────────╮
# │ constants │ # │ main │ constants │
# ╰───────────╯ # ╰──────┴───────────╯
RWX_MAIN_NAME="main.sh" RWX_MAIN_NAME="main.sh"
RWX_SELF_NAME="rwx" RWX_SELF_NAME="rwx"
RWX_SELF_COMMAND="_${RWX_SELF_NAME}_cmd_" 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_ROOT_SYSTEM="/usr/local/lib/${RWX_SELF_NAME}"
RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}" RWX_SELF_USER="${HOME}/${RWX_SELF_NAME}"
RWX_SHELL="$(cat "/proc/${$}/comm")"
RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}" RWX_MAIN_PATH="${RWX_ROOT_SYSTEM}/${RWX_MAIN_NAME}"
# ╭──────╮ # ╭──────┬───────
# │ core │ # │ main │ shell
# ╰──────╯ # ╰──────┴───────
# test if active shell is in interactive mode # test if active shell is in interactive mode
rwx_shell_interactive() { rwx_shell_interactive() {
@ -32,7 +40,7 @@ rwx_shell_interactive() {
} }
# ╭──────┬─────╮ # ╭──────┬─────╮
# │ core │ log │ # │ main │ log │
# ╰──────┴─────╯ # ╰──────┴─────╯
__rwx_log() { __rwx_log() {
@ -46,7 +54,7 @@ __rwx_log() {
} }
# ╭──────┬──────╮ # ╭──────┬──────╮
# │ core │ find │ # │ main │ find │
# ╰──────┴──────╯ # ╰──────┴──────╯
# find directory’s files by extension # find directory’s files by extension
@ -73,7 +81,7 @@ rwx_find_shell() {
} }
# ╭──────┬─────╮ # ╭──────┬─────╮
# │ core │ ifs │ # │ main │ ifs │
# ╰──────┴─────╯ # ╰──────┴─────╯
rwx_ifs_set() { rwx_ifs_set() {
@ -88,20 +96,19 @@ rwx_ifs_unset() {
} }
# ╭──────┬────────╮ # ╭──────┬────────╮
# │ core │ source │ # │ main │ source │
# ╰──────┴────────╯ # ╰──────┴────────╯
rwx_source() { rwx_source() {
local path="${1}" local path="${1}"
[ -d "${path}" ] || [ -d "${path}" ] ||
return 1 return 1
local count module modules local count module
modules="$(rwx_find_shell "${path}" "${RWX_MAIN_NAME}")"
rwx_ifs_set
count=0 count=0
__rwx_log "" \ __rwx_log "" \
". ${path}" ". ${path}"
for module in ${modules}; do rwx_ifs_set
for module in $(rwx_find_shell "${path}" "${RWX_MAIN_NAME}"); do
count=$((count + 1)) count=$((count + 1))
__rwx_log "$(printf "%02d" "${count}") ${module%.sh}" __rwx_log "$(printf "%02d" "${count}") ${module%.sh}"
module="${path}/${module}" module="${path}/${module}"
@ -111,9 +118,9 @@ rwx_source() {
rwx_ifs_unset rwx_ifs_unset
} }
# ╭──────┬────── # ╭──────
# │ core │ main │ # │ main │
# ╰──────┴────── # ╰──────
# run initial steps # run initial steps
rwx_main() { rwx_main() {
@ -124,33 +131,13 @@ rwx_main() {
fi fi
# user root # user root
rwx_source "${RWX_SELF_USER}" rwx_source "${RWX_SELF_USER}"
# # context / command
local argument if [ -n "${RWX_COMMAND_NAME}" ]; then
argument="$(echo "${0}" | sed "s|^-||")" "${RWX_SELF_COMMAND}${RWX_COMMAND_NAME}" "${@}"
case "${argument}" in # context / shell
"bash" | \ else
"dash" | \ rwx_self_init
"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 fi
;;
*)
local function name
name="$(basename "${argument}")"
function="${RWX_SELF_COMMAND}${name}"
"${function}" "${@}"
;;
esac
} }
# run main function # run main function

View file

@ -1,3 +1,7 @@
# ╭──────┬──────────╮
# │ self │ commands │
# ╰──────┴──────────╯
# get commands from root # get commands from root
rwx_self_commands() { rwx_self_commands() {
grep \ grep \
@ -8,6 +12,10 @@ rwx_self_commands() {
sed "s|^${RWX_SELF_COMMAND}||" sed "s|^${RWX_SELF_COMMAND}||"
} }
# ╭──────┬───────────╮
# │ self │ functions │
# ╰──────┴───────────╯
# get functions from root # get functions from root
rwx_self_functions() { rwx_self_functions() {
grep \ grep \
@ -17,6 +25,10 @@ rwx_self_functions() {
cut --delimiter "(" --fields 1 cut --delimiter "(" --fields 1
} }
# ╭──────┬──────╮
# │ self │ help │
# ╰──────┴──────╯
# output help message # output help message
rwx_self_help() { rwx_self_help() {
rwx_log \ rwx_log \
@ -25,6 +37,29 @@ rwx_self_help() {
" u__… = user" " 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_cmd_rwx_install() { rwx_self_install "${@}"; }
rwx_self_install() { rwx_self_install() {
local target="${1}" local target="${1}"
@ -46,6 +81,10 @@ rwx_self_install() {
rwx_link "${file}" "${RWX_MAIN_PATH}" rwx_link "${file}" "${RWX_MAIN_PATH}"
} }
# ╭──────┬────────╮
# │ self │ subset │
# ╰──────┴────────╯
rwx_self_subset() { rwx_self_subset() {
local argument path local argument path
for argument in "${@}"; do for argument in "${@}"; do
@ -61,6 +100,10 @@ rwx_self_subset() {
done done
} }
# ╭──────┬───────╮
# │ self │ write │
# ╰──────┴───────╯
rwx_self_write() { rwx_self_write() {
local target="${1}" local target="${1}"
if [ -n "${target}" ]; then if [ -n "${target}" ]; then