#!/usr/bin/with-contenv bashio # shellcheck shell=bash set -e ################################### # Export all addon options as env # ################################### # For all keys in options.json JSONSOURCE="/data/options.json" # Export keys as env variables # echo "All addon options were exported as variables" mapfile -t arr < <(jq -r 'keys[]' "${JSONSOURCE}") for KEYS in "${arr[@]}"; do # export key VALUE=$(jq ."$KEYS" "${JSONSOURCE}") VALUE="${VALUE//[\"\']/}" line="${KEYS}='${VALUE}'" # Check if secret if [[ "${line}" == *'!secret '* ]]; then echo "secret detected" secret=${line#*secret } # Check if single match secretnum=$(sed -n "/$secret:/=" /config/secrets.yaml) [[ "$secretnum" == *' '* ]] && bashio::exit.nok "There are multiple matches for your password name. Please check your secrets.yaml file" # Get text secret=$(sed -n "/$secret:/p" /config/secrets.yaml) secret=${secret#*: } line="${line%%=*}='$secret'" VALUE="$secret" fi # text if bashio::config.false "verbose" || [[ "${KEYS}" == *"PASS"* ]]; then bashio::log.blue "${KEYS}=******" else bashio::log.blue "$line" fi ###################################### # Export the variable to run scripts # ###################################### export "$line" # set .env echo "$line" >> /.env || true # set /etc/environment mkdir -p /etc echo "$line" >> /etc/environment # For non s6 if cat /etc/services.d/*/*run* &>/dev/null; then sed -i "1a export $line" /etc/services.d/*/*run* 2>/dev/null; fi if cat /etc/cont-init.d/*run* &>/dev/null; then sed -i "1a export $line" /etc/cont-init.d/*run* 2>/dev/null; fi # For s6 if [ -d /var/run/s6/container_environment ]; then printf "%s" "${VALUE}" > /var/run/s6/container_environment/"${KEYS}"; fi echo "export ${KEYS}='${VALUE}'" >> ~/.bashrc done ################ # Set timezone # ################ set +e if [ -n "$TZ" ] && [ -f /etc/localtime ]; then if [ -f /usr/share/zoneinfo/"$TZ" ]; then echo "Timezone set from $(cat /etc/timezone) to $TZ" ln -snf /usr/share/zoneinfo/"$TZ" /etc/localtime && echo "$TZ" >/etc/timezone fi fi