#!/usr/bin/env bashio # shellcheck shell=bash if [ ! -f /started ]; then touch /started #################### # Starting scripts # #################### for SCRIPTS in /etc/cont-init.d/*; do [ -e "$SCRIPTS" ] || continue echo "$SCRIPTS: executing" chown "$(id -u)":"$(id -g)" "$SCRIPTS" chmod a+x "$SCRIPTS" # Change shebang if no s6 supervision sed -i 's|/usr/bin/with-contenv bashio|/usr/bin/env bashio|g' "$SCRIPTS" /."$SCRIPTS" || echo "$SCRIPTS: exiting $?" done #################### # Export variables # #################### bashio::log.info "Exporting variables" for k in $(bashio::jq "/data/options.json" 'keys | .[]'); do bashio::log.blue "$k"="$(bashio::config "$k")" export "$k"="$(bashio::config "$k")" done ############### # CONFIG YAML # ############### CONFIGSOURCE="/config/addons_config/mealie/config.yaml" if [ -f "$CONFIGSOURCE" ]; then bashio::log.info "config.yaml found in $CONFIGSOURCE, exporting variables" # Helper function function parse_yaml { local prefix=$2 || local prefix="" local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @ | tr @ '\034') sed -ne "s|^\($s\):|\1|" \ -e "s| #.*$||g" \ -e "s|#.*$||g" \ -e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \ -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 | awk -F$fs '{ indent = length($1)/2; vname[indent] = $2; for (i in vname) {if (i > indent) {delete vname[i]}} if (length($3) > 0) { vn=""; for (i=0; i/tmpfile while IFS= read -r line; do # Clean output line="${line//[\"\']/}" # Check if secret if [[ "${line}" == *'!secret '* ]]; then echo "secret detected" secret=${line#*secret } # Check if single match secretnum=$(sed -n "/$secret:/=" /config/secrets.yaml) [[ $(echo $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'" fi # Data validation if [[ "$line" =~ ^.+[=].+$ ]]; then export "$line" # Show in log if ! bashio::config.false "verbose"; then bashio::log.blue "$line"; fi else bashio::exit.nok "$line does not follow the correct structure. Please check your yaml file." fi done <"/tmpfile" else bashio::log.info "No config.yaml found in $CONFIGSOURCE, using default parameters" fi ############### # PERMISSIONS # ############### echo "Permissions adapted" chmod -R 777 /data ################ # MIGRATE DATA # ################ bashio::log.warning "Data migration for amd64" bashio::log.warning "Data migrated to /config/addons_config/mealie_data ; you can now use the new addons. For aarch64, you need to do a manual backup and restore" mkdir -p /config/addons_config/mealie_data touch /config/addons_config/mealie_data/.secret chmod -R 777 /config/addons_config/mealie_data cp -r /data/* /config/addons_config/mealie_data/ bashio::log.info "Starting app" nginx & true bashio::log.info "Starting app" fi