PortValhalla/scripts/lib/settings.fish

101 lines
2.3 KiB
Fish
Raw Permalink Normal View History

2024-07-09 00:22:12 +00:00
#!/bin/env fish
function isConfigured -S
2024-09-08 15:09:01 +00:00
set -q CONFIG_NAME
end
function selectProfile -S -a result
2024-12-07 17:36:19 +00:00
source "$(status dirname)/../../lib/modules/fileSystems/select.fish"
set -l file (mktemp)
2024-10-06 19:25:34 +00:00
set -l header NAME
set -l profiles
getProfiles | jq ".[]" --raw-output0 | string split0 | while read profile
set -a profiles "$profile"
end
select "$header" "$file" \
"Please choose a profile" \
"No profiles specified" \
"$(string collect $profiles)"
set -g "$result" (cat "$file")
rm "$file"
end
2024-09-08 15:09:01 +00:00
function getProfiles -S
2024-10-06 19:25:34 +00:00
source "$(status dirname)/eval-flake.fish"
2024-09-08 15:09:01 +00:00
evalFlake "" "" --apply "builtins.attrNames" --json
end
2024-07-09 00:22:12 +00:00
function getConfig -S -a property
2024-09-08 15:09:01 +00:00
source "$(status dirname)/eval-flake.fish"
evalFlake "$CONFIG_NAME" "$property" $argv[2..]
2024-07-09 00:22:12 +00:00
end
2024-07-15 10:10:06 +00:00
2024-09-22 15:50:05 +00:00
function getOSConfigRoot
echo "valhalla.linux"
end
function getOSConfig -S -a property
getConfig "$(getOSConfigRoot).$property" $argv[2..]
end
function getProgramConfig -S
argparse -i "name=" "user=" -- $argv
set -l name $_flag_name
set -l user $_flag_user
2024-10-13 20:07:15 +00:00
set -l option "programs.$name"
if [ -z "$name" ]
set name $argv[1]
set argv $argv[2..]
end
2024-10-13 20:07:15 +00:00
if [ -z "$user" ]
getOSConfig "$option" $argv --fallback "{}"
2024-10-13 20:07:15 +00:00
else
getUserConfig "$user" "$option" $argv --fallback "{}"
2024-10-13 20:07:15 +00:00
end
end
function getAttributes -S -a property
getConfig "$property" --apply "builtins.attrNames" --json
end
function getUsers -S
2024-09-22 15:50:05 +00:00
getAttributes "$(getOSConfigRoot).users"
end
2024-10-06 19:25:34 +00:00
function getUserConfig -S -a name property
2024-09-22 15:50:05 +00:00
getOSConfig "users.$name.$property" $argv[3..]
end
function isSet -S -a property
2024-10-06 19:25:34 +00:00
not test "$(getConfig "$property" --json)" = null
end
2024-09-22 15:50:05 +00:00
function isOSSet -S -a property
isSet "$(getOSConfigRoot).$property"
end
function isUserSet -S -a name property
isOSSet "users.$name.$property"
end
function isEnabled -S -a property
2024-10-06 19:25:34 +00:00
getConfig "$property" --json | jq --exit-status >/dev/null
end
function isProgramEnabled -S
argparse -i "user=" "name=" -- $argv
getProgramConfig --user "$_flag_user" --name "$_flag_name" --json 2>/dev/null | jq --exit-status ".enable" >/dev/null
2024-10-13 20:07:15 +00:00
end
2024-09-22 15:50:05 +00:00
function isOSEnabled -S -a property
isEnabled "$(getOSConfigRoot).$property"
end
2024-07-15 10:10:06 +00:00
function collectionActive -S -a name
isOSEnabled "software.$name"
2024-07-15 10:10:06 +00:00
end