mirror of https://github.com/lukechilds/umbrel.git
Browse Source
* Related: https://github.com/getumbrel/umbrel-manager/pull/21 * Related: https://github.com/getumbrel/umbrel-dashboard/pull/130 * Add signal watcher system with power cycle triggers * Stop docker containers before system shutdown * karen * Run karen triggers async * Allow specifying an event dir * Check root_der exists * Add space * Check dependencies * Make sure karen is run as root * Make karen more kareny * Mount signals dir from umbrel-manager on hostfix-gitkeep-name
5 changed files with 64 additions and 0 deletions
@ -0,0 +1,5 @@ |
|||
#!/usr/bin/env bash |
|||
set -euo pipefail |
|||
|
|||
docker-compose stop |
|||
shutdown -r now |
@ -0,0 +1,5 @@ |
|||
#!/usr/bin/env bash |
|||
set -euo pipefail |
|||
|
|||
docker-compose stop |
|||
shutdown -h now |
@ -0,0 +1,53 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
# karen watches for signals and executes triggers in the events dir |
|||
# karen gets triggered a lot |
|||
|
|||
check_dependencies () { |
|||
for cmd in "$@"; do |
|||
if ! command -v $cmd >/dev/null 2>&1; then |
|||
echo "This script requires \"${cmd}\" to be installed" |
|||
exit 1 |
|||
fi |
|||
done |
|||
} |
|||
|
|||
check_root () { |
|||
if [[ $UID != 0 ]]; then |
|||
echo "Error: This script must be run as root." |
|||
echo "Can I speak to a manager please?" |
|||
exit 1 |
|||
fi |
|||
} |
|||
|
|||
check_dependencies fswatch readlink dirname |
|||
|
|||
check_root |
|||
|
|||
if [[ -n "$1" ]]; then |
|||
root_dir="$(readlink -f $1)" |
|||
else |
|||
root_dir="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/events" |
|||
fi |
|||
signal_dir="$root_dir/signals" |
|||
trigger_dir="$root_dir/triggers" |
|||
|
|||
if [[ ! -d "$root_dir" ]]; then |
|||
echo "Root dir does not exist '$root_dir'" |
|||
exit 1 |
|||
fi |
|||
|
|||
echo "karen is running in $root_dir" |
|||
fswatch -0 --event=PlatformSpecific $signal_dir | while read -d "" event; do |
|||
signal="${event#"$signal_dir"}" |
|||
signal="${signal#"/"}" |
|||
trigger="$trigger_dir/$signal" |
|||
|
|||
echo "Got signal: $signal" |
|||
if test -x "$trigger"; then |
|||
echo "karen is getting triggered!" |
|||
"$trigger" & |
|||
else |
|||
echo "No trigger found" |
|||
fi |
|||
done |
Loading…
Reference in new issue