Compare commits
19 commits
f9f93101ad
...
a3ea2e6ef0
Author | SHA1 | Date | |
---|---|---|---|
a3ea2e6ef0 | |||
576d0c981c | |||
8847877290 | |||
be2d6b2913 | |||
cdf0f47ca3 | |||
dc204d0c08 | |||
c8e4fc9b41 | |||
3dceffeea5 | |||
1345f07e16 | |||
820ec05b13 | |||
4f53472768 | |||
d9a6e33409 | |||
389f73a0b9 | |||
a54f0a82f7 | |||
6332717fa3 | |||
34881bb015 | |||
8ff5111c0e | |||
07b0c3fa05 | |||
fd3528c3ec |
10 changed files with 127 additions and 94 deletions
16
readme.md
16
readme.md
|
@ -115,7 +115,19 @@ Two interpreted languages for flexibility.
|
||||||
* ffmpeg
|
* ffmpeg
|
||||||
* tmux
|
* tmux
|
||||||
* get unresolved path for new panes & windows
|
* get unresolved path for new panes & windows
|
||||||
* fully working doc function algorithm
|
* source code
|
||||||
* self install aliases
|
* doc parsing algorithm
|
||||||
|
* install commands
|
||||||
|
* remove existing before
|
||||||
|
* test required
|
||||||
|
* binaries
|
||||||
|
* modules
|
||||||
|
* handle dependencies
|
||||||
|
* binaries
|
||||||
|
* modules
|
||||||
|
* handle tasks
|
||||||
|
* readme.md / when
|
||||||
|
* FIXME
|
||||||
|
* TODO
|
||||||
|
|
||||||
### 6.2 [Further tasks](#when) {#when-further}
|
### 6.2 [Further tasks](#when) {#when-further}
|
||||||
|
|
55
sh/code.sh
55
sh/code.sh
|
@ -6,6 +6,12 @@
|
||||||
# │ code │ variables │
|
# │ 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
|
# cache for the parsing awk script
|
||||||
_rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")"
|
_rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")"
|
||||||
# cache for code aliases
|
# cache for code aliases
|
||||||
|
@ -21,6 +27,18 @@ _rwx_code_functions=""
|
||||||
# cache for code variables
|
# cache for code variables
|
||||||
_rwx_code_variables=""
|
_rwx_code_variables=""
|
||||||
|
|
||||||
|
# ╭──────┬──────╮
|
||||||
|
# │ code │ help │
|
||||||
|
# ╰──────┴──────╯
|
||||||
|
|
||||||
|
# output help message
|
||||||
|
rwx_code_help() {
|
||||||
|
rwx_log \
|
||||||
|
"rwx_… = functions" \
|
||||||
|
" a__… = aliases" \
|
||||||
|
" u__… = user"
|
||||||
|
}
|
||||||
|
|
||||||
# ╭──────┬─────────╮
|
# ╭──────┬─────────╮
|
||||||
# │ code │ install │
|
# │ code │ install │
|
||||||
# ╰──────┴─────────╯
|
# ╰──────┴─────────╯
|
||||||
|
@ -181,3 +199,40 @@ rwx_code_parse() {
|
||||||
--assign action="${action}" \
|
--assign action="${action}" \
|
||||||
"${_rwx_code_awk}"
|
"${_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
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,20 @@
|
||||||
_rwx_cmd_cs() { rwx_crypt "${@}"; }
|
# ╭───────╮
|
||||||
|
# │ crypt │
|
||||||
|
# ╰───────╯
|
||||||
|
|
||||||
|
# ╭───────┬───────────╮
|
||||||
|
# │ crypt │ constants │
|
||||||
|
# ╰───────┴───────────╯
|
||||||
|
|
||||||
|
# TODO variablize
|
||||||
RWX_CRYPT_ROOT="/data/home/user/crypt"
|
RWX_CRYPT_ROOT="/data/home/user/crypt"
|
||||||
RWX_CRYPT_VAR="/var/lib/crypt"
|
RWX_CRYPT_VAR="/var/lib/crypt"
|
||||||
|
|
||||||
|
# ╭───────┬───────────╮
|
||||||
|
# │ crypt │ functions │
|
||||||
|
# ╰───────┴───────────╯
|
||||||
|
|
||||||
|
#| cat
|
||||||
rwx_crypt_device() {
|
rwx_crypt_device() {
|
||||||
local device size
|
local device size
|
||||||
local index=0
|
local index=0
|
||||||
|
@ -25,7 +37,17 @@ rwx_crypt_device() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
rwx_crypt() {
|
#| id
|
||||||
|
#| mkdir
|
||||||
|
#| qemu-nbd
|
||||||
|
#| cryptsetup
|
||||||
|
#| mount
|
||||||
|
#| umount
|
||||||
|
#| rmdir
|
||||||
|
#| cat
|
||||||
|
#| rm
|
||||||
|
#/ cs
|
||||||
|
rwx_crypt_setup() {
|
||||||
local action="${1}"
|
local action="${1}"
|
||||||
local action_close="close"
|
local action_close="close"
|
||||||
local action_open="open"
|
local action_open="open"
|
|
@ -1,8 +1,12 @@
|
||||||
|
# ╭────────╮
|
||||||
|
# │ ffmpeg │
|
||||||
|
# ╰────────╯
|
||||||
|
|
||||||
# ╭────────┬─────────┬───────╮
|
# ╭────────┬─────────┬───────╮
|
||||||
# │ ffmpeg │ devices │ reset │
|
# │ ffmpeg │ devices │ reset │
|
||||||
# ╰────────┴─────────┴───────╯
|
# ╰────────┴─────────┴───────╯
|
||||||
|
|
||||||
_rwx_cmd_rwx_ffmpeg_devices_reset() { rwx_ffmpeg_devices_reset "${@}"; }
|
#/ rwx_ffmpeg_devices_reset
|
||||||
rwx_ffmpeg_devices_reset() {
|
rwx_ffmpeg_devices_reset() {
|
||||||
local module="uvcvideo"
|
local module="uvcvideo"
|
||||||
modprobe --remove "${module}" &&
|
modprobe --remove "${module}" &&
|
||||||
|
|
|
@ -76,9 +76,9 @@ _rwx_log() {
|
||||||
local line
|
local line
|
||||||
for line in "${@}"; do
|
for line in "${@}"; do
|
||||||
if [ -n "${prefix}" ]; then
|
if [ -n "${prefix}" ]; then
|
||||||
__rwx_log "${prefix} ${line}"
|
_rwx_main_log "${prefix} ${line}"
|
||||||
else
|
else
|
||||||
__rwx_log "${line}"
|
_rwx_main_log "${line}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
76
sh/main.sh
76
sh/main.sh
|
@ -3,15 +3,6 @@
|
||||||
# │ main │
|
# │ main │
|
||||||
# ╰──────╯
|
# ╰──────╯
|
||||||
# main module
|
# main module
|
||||||
# * builtins
|
|
||||||
# * echo
|
|
||||||
# * printf
|
|
||||||
# * read
|
|
||||||
# * binaries
|
|
||||||
# * awk
|
|
||||||
# * cat
|
|
||||||
# * find
|
|
||||||
# * sed
|
|
||||||
|
|
||||||
# ╭──────┬───────────╮
|
# ╭──────┬───────────╮
|
||||||
# │ main │ constants │
|
# │ main │ constants │
|
||||||
|
@ -29,21 +20,17 @@ RWX_SELF_NAME="rwx"
|
||||||
# cache of all sourced code modules
|
# cache of all sourced code modules
|
||||||
_rwx_code=""
|
_rwx_code=""
|
||||||
|
|
||||||
|
# TODO variablize
|
||||||
# system root directory of the project
|
# system root directory of the project
|
||||||
RWX_ROOT_SYSTEM="/usr/local/lib/${RWX_SELF_NAME}"
|
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 │
|
# │ main │ find │
|
||||||
# ╰──────┴──────╯
|
# ╰──────┴──────╯
|
||||||
|
|
||||||
# find directory’s files by extension
|
# find directory’s files by extension
|
||||||
#> find
|
#| find
|
||||||
#> sort
|
#| sort
|
||||||
rwx_find_extension() {
|
rwx_find_extension() {
|
||||||
local extension="${1}"
|
local extension="${1}"
|
||||||
local root="${2}"
|
local root="${2}"
|
||||||
|
@ -82,7 +69,7 @@ rwx_shell_interactive() {
|
||||||
# │ main │ log │
|
# │ main │ log │
|
||||||
# ╰──────┴─────╯
|
# ╰──────┴─────╯
|
||||||
|
|
||||||
__rwx_log() {
|
_rwx_main_log() {
|
||||||
if rwx_shell_interactive; then
|
if rwx_shell_interactive; then
|
||||||
[ ${#} -gt 0 ] || set -- ""
|
[ ${#} -gt 0 ] || set -- ""
|
||||||
local line
|
local line
|
||||||
|
@ -96,24 +83,24 @@ __rwx_log() {
|
||||||
# │ main │ source │
|
# │ main │ source │
|
||||||
# ╰──────┴────────╯
|
# ╰──────┴────────╯
|
||||||
|
|
||||||
# source code from file path
|
# source code from root path but file
|
||||||
rwx_source() {
|
rwx_main_source() {
|
||||||
local root="${1}"
|
local root="${1}"
|
||||||
[ -d "${root}" ] ||
|
[ -d "${root}" ] ||
|
||||||
return 1
|
return 1
|
||||||
local file="${2}"
|
local file="${2}"
|
||||||
local count module modules
|
local count module modules
|
||||||
count=0
|
count=0
|
||||||
__rwx_log "" \
|
_rwx_main_log "" \
|
||||||
". ${root}"
|
". ${root}"
|
||||||
modules="$(rwx_find_shell "${root}" "${file}")"
|
modules="$(rwx_find_shell "${root}" "${file}")"
|
||||||
while IFS= read -r module; do
|
while IFS= read -r module; do
|
||||||
count=$((count + 1))
|
count=$((count + 1))
|
||||||
__rwx_log "$(printf "%02d" "${count}") ${module%.sh}"
|
_rwx_main_log "$(printf "%02d" "${count}") ${module%.sh}"
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
. "${root}/${module}"
|
. "${root}/${module}"
|
||||||
# cache code
|
# cache code
|
||||||
rwx_cache "${root}" "${module}"
|
rwx_main_cache "${root}" "${module}"
|
||||||
done <<EOF
|
done <<EOF
|
||||||
${modules}
|
${modules}
|
||||||
EOF
|
EOF
|
||||||
|
@ -125,8 +112,8 @@ EOF
|
||||||
|
|
||||||
# cache source code of a module
|
# cache source code of a module
|
||||||
# inside a global code variable
|
# inside a global code variable
|
||||||
#> cat
|
#| cat
|
||||||
rwx_cache() {
|
rwx_main_cache() {
|
||||||
local root="${1}"
|
local root="${1}"
|
||||||
local module="${2}"
|
local module="${2}"
|
||||||
local name="${module%.sh}"
|
local name="${module%.sh}"
|
||||||
|
@ -145,43 +132,18 @@ ${text}
|
||||||
# ╰──────┴──────╯
|
# ╰──────┴──────╯
|
||||||
|
|
||||||
# run initial steps
|
# run initial steps
|
||||||
rwx_main() {
|
#< code
|
||||||
|
rwx_main_main() {
|
||||||
# cache main
|
# cache main
|
||||||
rwx_cache "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"
|
rwx_main_cache "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"
|
||||||
# source system root
|
# source system root
|
||||||
if ! rwx_source "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"; then
|
if ! rwx_main_source "${RWX_ROOT_SYSTEM}" "${RWX_MAIN_NAME}"; then
|
||||||
__rwx_log "Not a directory: ${RWX_ROOT_SYSTEM}"
|
_rwx_main_log "Not a directory: ${RWX_ROOT_SYSTEM}"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
# source user root
|
# run code main function
|
||||||
rwx_source "${RWX_SELF_USER}"
|
rwx_code_main "${@}"
|
||||||
# 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
|
# run main function
|
||||||
rwx_main "${@}"
|
rwx_main_main "${@}"
|
||||||
|
|
27
sh/self.sh
27
sh/self.sh
|
@ -2,35 +2,11 @@
|
||||||
# │ self │
|
# │ 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 │
|
# │ self │ subset │
|
||||||
# ╰──────┴────────╯
|
# ╰──────┴────────╯
|
||||||
|
|
||||||
|
# TODO move to code module
|
||||||
rwx_self_subset() {
|
rwx_self_subset() {
|
||||||
local argument file root
|
local argument file root
|
||||||
for argument in "${@}"; do
|
for argument in "${@}"; do
|
||||||
|
@ -51,6 +27,7 @@ rwx_self_subset() {
|
||||||
# │ self │ write │
|
# │ self │ write │
|
||||||
# ╰──────┴───────╯
|
# ╰──────┴───────╯
|
||||||
|
|
||||||
|
# TODO move to code module
|
||||||
rwx_self_write() {
|
rwx_self_write() {
|
||||||
local target="${1}"
|
local target="${1}"
|
||||||
if [ -n "${target}" ]; then
|
if [ -n "${target}" ]; then
|
||||||
|
|
|
@ -4,9 +4,10 @@
|
||||||
|
|
||||||
# based on currently running shell
|
# based on currently running shell
|
||||||
case "${RWX_SHELL}" in
|
case "${RWX_SHELL}" in
|
||||||
"bash") ;;
|
# continue if it can handle it
|
||||||
# skip illegal syntax to come
|
"bash") ;;
|
||||||
*) return ;;
|
# otherwise skip incorrect names to come
|
||||||
|
*) return ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# shellcheck disable=SC3033
|
# shellcheck disable=SC3033
|
||||||
|
|
|
@ -44,7 +44,7 @@ rwx_test_doc() {
|
||||||
\
|
\
|
||||||
"_rwx_code" \
|
"_rwx_code" \
|
||||||
\
|
\
|
||||||
"rwx_cache" \
|
"rwx_main_cache" \
|
||||||
\
|
\
|
||||||
"alias/batcat" \
|
"alias/batcat" \
|
||||||
"b" \
|
"b" \
|
||||||
|
|
|
@ -36,7 +36,7 @@ rwx_tmux_list() {
|
||||||
# │ tmux │ setup │
|
# │ tmux │ setup │
|
||||||
# ╰──────┴───────╯
|
# ╰──────┴───────╯
|
||||||
|
|
||||||
_rwx_cmd_rwx_tmux_setup() { rwx_tmux_setup "${@}"; }
|
#/ rwx_tmux_setup
|
||||||
rwx_tmux_setup() {
|
rwx_tmux_setup() {
|
||||||
local file script
|
local file script
|
||||||
if rwx_root; then
|
if rwx_root; then
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue