Manage states that have not resolved

This commit is contained in:
Nick Chambers 2021-11-21 00:58:45 -06:00
parent 58ba1cf3d7
commit 19ad647d8a
1 changed files with 24 additions and 4 deletions

28
rowbot
View File

@ -26,6 +26,10 @@ put_assoc_array() {
}
get_assoc_array() {
if [[ ! -v $1 ]]; then
declare -gA "$1"
fi
declare -n assoc_array=$1
declare -n scalar=RB_AA_${1^^}
@ -344,8 +348,22 @@ state_resolve() {
}
state_put() {
local ns=${NS-global}
local ns=${NS-global} managed found=0
declare -gA __rowbot_state_store_"$ns"
if [[ $ns != global ]]; then
for managed in "${states_managed[@]}"; do
if [[ $managed = "$ns" ]]; then
found=1
break
fi
done
if (( !found )); then
states_managed+=( "$ns" )
fi
fi
# The `ns_config` variable is a reference to an array
# shellcheck disable=SC2178
declare -n ns_config=__rowbot_state_store_"$ns"
@ -403,6 +421,7 @@ on_sys_before_999_state() {
local managed
for managed in "${states_managed[@]}"; do
declare -p __rowbot_state_store_"$managed"
put_assoc_array __rowbot_state_store_"$managed"
done
@ -414,6 +433,7 @@ on_sys_after_001_state() {
get_array states_managed
for managed in "${states_managed[@]}"; do
declare -gA __rowbot_state_store_"$managed"
get_assoc_array __rowbot_state_store_"$managed"
done
}
@ -575,11 +595,11 @@ on_sys_init_015_net() {
NS=net DEFAULT=irc.libera.chat state_resolve server
NS=net DEFAULT=no state_resolve tls
if ! NS=net QUIET="" state_get tls; then
NS=net DEFAULT=6667 state_resolve port
else
if NS=net QUIET="" state_get tls; then
NS=net DEFAULT=6697 state_resolve port
NS=net state_resolve client-cert
else
NS=net DEFAULT=6667 state_resolve port
fi
}