forked from 0k/0k-charms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.2 KiB
71 lines
2.2 KiB
#!/bin/bash
|
|
|
|
## Init is run on host
|
|
## For now it is run every time the script is launched, but
|
|
## it should be launched only once after build.
|
|
|
|
## Accessible variables are:
|
|
## - SERVICE_NAME Name of current service
|
|
## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
|
|
## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
|
|
## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
|
|
|
|
set -e
|
|
|
|
service_def=$(get_compose_service_def "$SERVICE_NAME")
|
|
|
|
USER_EMAIL=$(echo "$service_def" | shyaml get-value options.email 2>/dev/null) || {
|
|
err "No ${WHITE}email${NORMAL} value in ${DARKYELLOW}$SERVICE_NAME${NORMAL} compose's ${WHITE}options${NORMAL}."
|
|
exit 1
|
|
}
|
|
|
|
yaml_opt_bash_env() {
|
|
local prefix="$1" key value
|
|
while read-0 key value; do
|
|
new_prefix="${prefix}_${key^^}"
|
|
if [[ "$(echo "$value" | shyaml get-type)" == "struct" ]]; then
|
|
echo "$value" | yaml_opt_bash_env "${new_prefix}"
|
|
else
|
|
printf "%s\0%s\0" "${new_prefix}" "$value"
|
|
fi
|
|
done < <(shyaml key-values-0)
|
|
}
|
|
|
|
yaml_opt_bash_env_ignore_first_level() {
|
|
local prefix="$1" key value
|
|
while read-0 key value; do
|
|
new_prefix="${prefix}_${key^^}"
|
|
if [[ "$(echo "$value" | shyaml get-type)" == "struct" ]]; then
|
|
echo "$value" | yaml_opt_bash_env "${new_prefix}"
|
|
fi
|
|
done < <(shyaml key-values-0)
|
|
}
|
|
|
|
|
|
config="
|
|
$SERVICE_NAME:
|
|
environment:
|
|
LETSENCRYPT_USER_MAIL: $USER_EMAIL"
|
|
|
|
|
|
while read-0 key value; do
|
|
config+="$(printf "\n %s: %s" "$key" "$value")"
|
|
done < <(yaml_opt_bash_env_ignore_first_level LEXICON < <(echo "$service_def" | shyaml -y get-value options))
|
|
|
|
## XXXvlab: this is very temporary, we should change image to support more
|
|
## than one provider (cf: https://github.com/adferrand/docker-letsencrypt-dns/issues/24)
|
|
first_key=
|
|
while read-0 key value; do
|
|
[[ "$(echo "$value" | shyaml get-type)" == "struct" ]] && {
|
|
first_key="$key"
|
|
break
|
|
}
|
|
done < <(echo "$service_def" | shyaml key-values-0 options)
|
|
|
|
config+=$(echo -en "\n LEXICON_PROVIDER: $first_key")
|
|
|
|
init-config-add "$config"
|
|
|
|
mkdir -p "$SERVICE_DATASTORE/etc/letsencrypt"
|
|
touch "$SERVICE_DATASTORE/etc/letsencrypt/domains.conf"
|
|
|