Refactor autostart system

This commit is contained in:
Tobias Reisinger 2023-07-15 13:54:52 +02:00
parent b1814d3a5f
commit 0d82914d42
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
3 changed files with 178 additions and 113 deletions

View file

@ -6,25 +6,17 @@ _systemctl () {
systemctl --user "${@:2}" "autostart@$1.service"
}
_dasel () {
dasel -f "$HOME/.config/autostart.toml" -r toml -w plain "${@}"
_query_autostart_toml() {
tomlq -r --arg host "$hostname" \
'.hosts[$host].groups as $groups | .apps | to_entries[] | select(
(.value.hosts | contains([$host])) or
([.value.group] | inside($groups))
) | '"$1" \
"$HOME/.config/autostart.toml"
}
_list () {
part_root='all().filter(not(equal(type(),object))).key()'
part_host="all().filter(equal(type(),object)).filter(equal(key(),$hostname)).all().key()"
query="merge($part_host,$part_root).all()"
programs=$(_dasel "$query" \
| sort \
| uniq)
for program in $programs
do
cmd=$(_get_autostart_cmd "$program")
if [ -n "$cmd" ]; then
echo "$program"
fi
done
_query_autostart_toml '.key'
}
_echo_table () {
@ -71,20 +63,7 @@ _autostart_manage_sync () {
}
_get_autostart_cmd () {
selector_base="all()"
selector_host="all().filter(equal(type(),object)).filter(equal(key(),$hostname)).all()"
selector_entry="filter(not(equal(type(),object))).filter(equal(key(),$1))"
cmd=$(_dasel "$selector_base.$selector_entry")
cmd_local=$(_dasel "$selector_host.$selector_entry")
if [ -n "$cmd_local" ]; then
if [ "$cmd_local" = "false" ]; then
cmd=""
else
cmd="$cmd_local"
fi
fi
echo "$cmd"
_query_autostart_toml 'select(.key == "'"$1"'") | .value.command'
}
_autostart_manage_exec () {