Compare commits

..

No commits in common. "091c9339f70b428eab746f315648c9e099ef7473" and "aec3d1a0afe49b5065e75040e2be11aec7076876" have entirely different histories.

6 changed files with 127 additions and 164 deletions

18
sh/alias/shell.sh Normal file
View file

@ -0,0 +1,18 @@
# shorten alias
a() {
alias \
"${@}"
}
# swap directory (current ↔ previous)
sd() {
cd \
- ||
return
}
# exit terminal
x() {
exit \
"${@}"
}

View file

@ -32,7 +32,6 @@ BEGIN {
RE_ALIAS = RE_BEGIN "#=" RE_SPACES RE_VAR RE_END
RE_CLOSE = RE_BEGIN "}" RE_SPACES RE_END
RE_COMMAND = RE_BEGIN "#/" RE_SPACES RE_VAR RE_END
RE_CONSTANT = RE_BEGIN RE_CONST RE_SET RE_END
RE_DOC = RE_BEGIN RE_SPACES "#" RE_SPACE RE_ANY RE_END
RE_FUNCTION = RE_BEGIN RE_VAR RE_FUNC RE_END
@ -41,7 +40,6 @@ BEGIN {
RE_VARIABLE = RE_BEGIN RE_VAR RE_SET RE_END
alias = 0
command = 0
f = ""
reset()
module = 0
@ -52,10 +50,6 @@ BEGIN {
if (match($0, RE_ALIAS, m)) {
print m[1]
}
} else if (action == "commands") {
if (match($0, RE_COMMAND, m)) {
print m[1]
}
} else if (action == "constants") {
if (match($0, RE_CONSTANT, m)) {
print m[1]
@ -95,11 +89,6 @@ BEGIN {
if (m[1] == target) {
alias = 1
}
} else if (match($0, RE_COMMAND, m)) {
append("/ " m[1])
if (m[1] == target) {
command = 1
}
# set
} else if (match($0, RE_CONSTANT, m)) {
if (m[1] == target) {
@ -125,9 +114,6 @@ BEGIN {
if (alias) {
print "= " target
output(f, "function")
} else if (command) {
print "/ " target
output(f, "function")
} else if (f == target) {
output(f, "function")
} else {

View file

@ -12,8 +12,6 @@ _rwx_code_awk="$(cat "${RWX_ROOT_SYSTEM}/code.awk")"
_rwx_code_aliases=""
# cache for code aliases functions
_rwx_code_aliases_functions=""
# cache for code commands
_rwx_code_commands=""
# cache for code constants
_rwx_code_constants=""
# cache for code functions
@ -25,7 +23,7 @@ _rwx_code_variables=""
# │ code │ install │
# ╰──────┴─────────╯
#/ rwx_install
#= rwx_install
rwx_code_install() {
local target="${1}"
local command file name root
@ -46,7 +44,7 @@ rwx_code_install() {
rwx_remove "${file}"
rwx_link "${file}" "${name}"
done <<EOF
${_rwx_code_commands}
${_rwx_code_aliases}
EOF
# sh
file="${target}/etc/profile.d/${RWX_SELF_NAME}.sh"
@ -102,11 +100,6 @@ rwx_code_aliases_functions() {
echo "${_rwx_code_aliases_functions}"
}
# show the cached commands
rwx_code_commands() {
echo "${_rwx_code_commands}"
}
# show the cached constants
#= rcc
rwx_code_constants() {
@ -164,8 +157,6 @@ rwx_code_load() {
done <<EOF
${_rwx_code_aliases_functions}
EOF
# parse commands
_rwx_code_commands="$(rwx_code_parse "commands")"
# parse constants
_rwx_code_constants="$(rwx_code_parse "constants")"
# parse functions

View file

@ -26,8 +26,8 @@ RWX_SELF_NAME="rwx"
# │ main │ variables │
# ╰──────┴───────────╯
# cache of all sourced code modules
_rwx_code=""
# currently running shell name
RWX_SHELL="$(cat "/proc/${$}/comm")"
# system root directory of the project
RWX_ROOT_SYSTEM="/usr/local/lib/${RWX_SELF_NAME}"
@ -37,109 +37,6 @@ 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
rwx_find_extension() {
local extension="${1}"
local root="${2}"
local file="${3}"
set -- \
"${root}" \
-name "*.${extension}" \
-type "f"
[ -n "${file}" ] &&
set -- "${@}" \
-not \
-name "${file}"
find "${@}" \
-printf "%P\n" |
sort
}
# find directory’s sh files
rwx_find_shell() {
rwx_find_extension "sh" "${@}"
}
# ╭──────┬───────╮
# │ main │ shell │
# ╰──────┴───────╯
# test if active shell is in interactive mode
rwx_shell_interactive() {
case "${-}" in
*i*) ;;
*) return 1 ;;
esac
}
# ╭──────┬─────╮
# │ main │ log │
# ╰──────┴─────╯
__rwx_log() {
if rwx_shell_interactive; then
[ ${#} -gt 0 ] || set -- ""
local line
for line in "${@}"; do
echo "${line}"
done
fi
}
# ╭──────┬────────╮
# │ 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 <<EOF
${modules}
EOF
}
# ╭──────┬───────╮
# │ main │ cache │
# ╰──────┴───────╯
# cache source code of a module
# inside a global code variable
#> cat
rwx_cache() {
local root="${1}"
local module="${2}"
local name="${module%.sh}"
local path="${root}/${module}"
local text
text="$(cat "${path}")"
# all source code
_rwx_code="${_rwx_code}\
#. ${name}
${text}
"
}
# ╭──────┬──────╮
# │ main │ main │
# ╰──────┴──────╯
@ -179,6 +76,109 @@ rwx_main() {
fi
}
# ╭──────┬───────╮
# │ main │ cache │
# ╰──────┴───────╯
# cache of all sourced code modules
_rwx_code=""
# cache source code of a module
# inside a global code variable
rwx_cache() {
local root="${1}"
local module="${2}"
local name="${module%.sh}"
local path="${root}/${module}"
local text
text="$(cat "${path}")"
# all source code
_rwx_code="${_rwx_code}\
#. ${name}
${text}
"
}
# ╭──────┬────────╮
# │ 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 <<EOF
${modules}
EOF
}
# ╭──────┬─────╮
# │ main │ log │
# ╰──────┴─────╯
__rwx_log() {
if rwx_shell_interactive; then
[ ${#} -gt 0 ] || set -- ""
local line
for line in "${@}"; do
echo "${line}"
done
fi
}
# ╭──────┬───────╮
# │ main │ shell │
# ╰──────┴───────╯
# test if active shell is in interactive mode
rwx_shell_interactive() {
case "${-}" in
*i*) ;;
*) return 1 ;;
esac
}
# ╭──────┬──────╮
# │ main │ find │
# ╰──────┴──────╯
# find directory’s files by extension
rwx_find_extension() {
local extension="${1}"
local root="${2}"
local file="${3}"
set -- \
"${root}" \
-name "*.${extension}" \
-type "f"
[ -n "${file}" ] &&
set -- "${@}" \
-not \
-name "${file}"
find "${@}" \
-printf "%P\n" |
sort
}
# find directory’s sh files
rwx_find_shell() {
rwx_find_extension "sh" "${@}"
}
# ╭──────┬─────╮
# │ main │ run │
# ╰──────┴─────╯

View file

@ -2,9 +2,6 @@
# │ shell │
# ╰───────╯
# currently running shell name
RWX_SHELL="$(cat "/proc/${$}/comm")"
_rwx_shell_color() {
local code="${1}"
case "${RWX_SHELL}" in
@ -130,32 +127,6 @@ rwx_shell_prompt() {
printf "%b" "${view}"
}
# ╭───────┬───────────╮
# │ shell │ shortcuts │
# ╰───────┴───────────╯
# shorten alias
#= a
rwx_shell_alias() {
alias \
"${@}"
}
# swap directory (current ↔ previous)
#= sd
rwx_shell_swap_directory() {
cd \
- ||
return
}
# exit terminal
#= x
rwx_shell_exit() {
exit \
"${@}"
}
# ╭───────┬──────╮
# │ shell │ main │
# ╰───────┴──────╯

View file

@ -21,8 +21,7 @@ rwx_test_code() {
"variables" \
"functions" \
"aliases" \
"aliases_functions" \
"commands"
"aliases_functions"
rwx_code
for items in "${@}"; do
echo
@ -47,9 +46,7 @@ rwx_test_doc() {
"rwx_cache" \
\
"alias/batcat" \
"b" \
\
"rwx_install"
"b"
for item in "${@}"; do
echo
rwx_code_doc "${item}"