xrsh-buildroot/buildroot-v86/board/v86/rootfs_overlay/etc/profile.sh

110 lines
2.3 KiB
Bash
Raw Normal View History

2024-09-11 14:58:31 +02:00
hook(){
test -z "$1" && { echo "usage: hook <cmd_or_jsfunction> [args]"; return 0; }
cmd=$1
shift
test -d ~/hook.d/$cmd && {
find ~/hook.d/$cmd/ -type f -executable | while read hook; do
{ $hook "$@" || true; } | awk '{ gsub(/\/root\/\//,"",$1); $1 = sprintf("%-40s", $1)} 1'
done
}
}
alert(){
test -z "$1" && { echo "usage: alert <title> <message>"; return 0; }
title=$1
test -z "$1" || shift
msg="$*"
printf "%s \033[0m%s\n" "$title" "$msg"
hook alert $title "$msg"
}
confirm(){
test -z "$1" && { echo "usage: confirm <question>"; return 0; }
read -p "$(printf "\033[0m")[?] $1 [y/n] $(printf "\033[0m")" y
test $y = y && echo true && return 0
test $y = y || echo false
hook confirm $1 $y
}
prompt(){
test -z "$1" && { echo "usage: prompt <question> [answer_default]"; return 0; }
test -n "$2" && answer="[$2] " && answer_fallback="$2"
read -p "$(printf "\033[0m")[?] $1: $answer $(printf "\033[0m")" answer
test -z "$answer" && answer="$answer_fallback"
echo "$answer"
hook prompt $1 $answer
}
console(){
js 'return '$1
printf "\n"
2024-09-11 14:58:31 +02:00
}
# usage: require <url|file>
#
# info: adds javascript/css url/script to DOM
2024-09-11 14:58:31 +02:00
require(){
file=$(basename "$1")
2024-09-24 16:13:37 +02:00
ext="${file/*\./}"
case $ext in
js|css)
js '(async () => {
await AFRAME.utils.require({"'$file'": "'$1'"})
})(); return ""'
;;
glb|gltf|obj|usdz|fbx)
require 'https://xrfragment.org/dist/xrfragment.aframe.js'
2024-09-24 17:18:59 +02:00
sleep 1.5
2024-09-24 16:13:37 +02:00
echo "<a-entity xrf='$1'></a-entity>" >> /root/index.html
;;
2024-10-04 17:57:27 +02:00
sh)
js '
fetch('$1')
.then( (res) => res.text() )
.then( (text) => console.log(text) )
'
;;
2024-09-24 16:13:37 +02:00
*)
alert $ext "extension is not supported (yet)"
;;
esac
2024-09-11 14:58:31 +02:00
}
# usage: man <topic>
#
# info: simple manual viewer
2024-09-13 18:55:12 +02:00
man(){
test "$1" = xrsh && {
cat /root/manual.md | less
}
}
2024-09-15 11:18:36 +02:00
help(){ man xrsh; }
2024-09-13 18:55:12 +02:00
# usage: infinite ./runmydaemon
#
# info: will run daemon forever (restarts when quit)
2024-09-15 11:18:36 +02:00
infinite(){
while sleep 1s; do
"$@"
2024-09-11 14:58:31 +02:00
done
}
# usage: wait_for sleep 5s
#
# info: will print dots while waiting for process to end
wait_for(){
dotting(){ while sleep 1s; do printf "."; done; }
dotting &
PID=$!
"$@"
kill -9 $PID
printf "\n"
}