Compare commits

..

No commits in common. "a3ea2e6ef06b088c6dc75d234de1eb55d9e12885" and "f9f93101ad7a5c4757f004716e5bc1b42103b04b" have entirely different histories.

10 changed files with 94 additions and 127 deletions

View file

@ -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}

View file

@ -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
}

View file

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

View file

@ -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}" &&

View file

@ -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
}

View file

@ -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 <<EOF
${modules}
EOF
@ -112,8 +125,8 @@ EOF
# cache source code of a module
# inside a global code variable
#| cat
rwx_main_cache() {
#> 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 "${@}"

View file

@ -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

View file

@ -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

View file

@ -44,7 +44,7 @@ rwx_test_doc() {
\
"_rwx_code" \
\
"rwx_main_cache" \
"rwx_cache" \
\
"alias/batcat" \
"b" \

View file

@ -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