mirror of
https://github.com/lildude/ha-addon-teslamate.git
synced 2026-10-13 13:10:30 -04:00
* Add optional env vars config option * Don't use master builder It's borked - https://github.com/home-assistant/builder/issues/212 * Use specific builder version
85 lines
3.0 KiB
Bash
85 lines
3.0 KiB
Bash
#!/usr/bin/with-contenv bashio
|
|
# -*- bash -*-
|
|
# shellcheck shell=bash
|
|
set -e
|
|
|
|
# Database things
|
|
DATABASE_HOST=$(bashio::config 'database_host')
|
|
DATABASE_NAME=$(bashio::config 'database_name')
|
|
DATABASE_PASS=$(bashio::config 'database_pass')
|
|
DATABASE_PORT=$(bashio::config 'database_port')
|
|
DATABASE_USER=$(bashio::config 'database_user')
|
|
|
|
# MQTT things
|
|
DISABLE_MQTT=$(bashio::config 'disable_mqtt')
|
|
MQTT_HOST=$(bashio::config 'mqtt_host')
|
|
MQTT_NAMESPACE=$(bashio::config 'mqtt_namespace')
|
|
MQTT_PASSWORD=$(bashio::config 'mqtt_pass')
|
|
MQTT_TLS_ACCEPT_INVALID_CERTS=$(bashio::config 'mqtt_tls_accept_invalid_certs')
|
|
MQTT_TLS=$(bashio::config 'mqtt_tls')
|
|
MQTT_USERNAME=$(bashio::config 'mqtt_user')
|
|
|
|
# Other things
|
|
IMPORT_DIR=$(bashio::config 'import_dir')
|
|
PORT=4000
|
|
TZ=$(bashio::config 'timezone')
|
|
DEFAULT_GEOFENCE=$(bashio::config 'default_geofence')
|
|
|
|
encryption_key=$(bashio::config 'encryption_key')
|
|
if bashio::config.is_empty 'encryption_key'; then
|
|
encryption_key=$(openssl rand -hex 32)
|
|
bashio::addon.option 'encryption_key' "$encryption_key"
|
|
fi
|
|
ENCRYPTION_KEY=$(bashio::config 'encryption_key')
|
|
|
|
ingress_entry=$(curl -X GET \
|
|
-H "Authorization: Bearer ${SUPERVISOR_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-s http://supervisor/addons/self/info | \
|
|
jq -r '.data.ingress_entry')
|
|
|
|
export URL_PATH=$ingress_entry
|
|
|
|
export DATABASE_HOST DATABASE_NAME DATABASE_PASS DATABASE_PORT DATABASE_USER \
|
|
DISABLE_MQTT MQTT_HOST MQTT_NAMESPACE MQTT_PASSWORD MQTT_TLS_ACCEPT_INVALID_CERTS \
|
|
MQTT_TLS MQTT_USERNAME IMPORT_DIR PORT TZ DEFAULT_GEOFENCE ENCRYPTION_KEY URL_PATH
|
|
|
|
# These are optional and applied last so we can override those set above if needed.
|
|
for env_var in $(bashio::config 'env_vars|keys'); do
|
|
name=$(bashio::config "env_vars[${env_var}].name")
|
|
value=$(bashio::config "env_vars[${env_var}].value")
|
|
bashio::log.debug "Setting Env Variable ${name} to ${value}"
|
|
export "${name}=${value}"
|
|
done
|
|
|
|
# Import dashboards
|
|
if bashio::config.true 'grafana_import_dashboards'; then
|
|
/dashboards.sh restore
|
|
fi
|
|
|
|
# Create the PostgreSQL database if it doesn't exist
|
|
if pg_isready -h "$DATABASE_HOST" -p "$DATABASE_PORT" > /dev/null 2>&1; then
|
|
bashio::log.info "Creating database '$DATABASE_NAME' on $DATABASE_HOST"
|
|
|
|
if [[ -n $(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -Atqc "\list $DATABASE_NAME") ]]; then
|
|
bashio::log.info "Database $DATABASE_NAME already exists"
|
|
else
|
|
if PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -qc "CREATE DATABASE \"$DATABASE_NAME\""; then
|
|
bashio::log.info "Database $DATABASE_NAME created"
|
|
else
|
|
bashio::log.error "Failed to create database $DATABASE_NAME"
|
|
exit 1
|
|
fi
|
|
fi
|
|
else
|
|
bashio::log.error "PostgreSQL at '$DATABASE_HOST' is not ready or unreachable"
|
|
exit 1
|
|
fi
|
|
|
|
ulimit -n 1048576
|
|
|
|
bashio::log.info "Starting TeslaMate"
|
|
|
|
cd /opt/app
|
|
exec $(/usr/bin/env sh) /entrypoint.sh bin/teslamate start
|