diff --git a/check_config/CHANGELOG.md b/check_config/CHANGELOG.md index 7f3f41f..6c23011 100644 --- a/check_config/CHANGELOG.md +++ b/check_config/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.0 +- Migrated add-on onto Bashio +- Improved add-on log output +- Added documentation to add-on itself +- Added support for Home Assistant wheels repository + ## 1.0 - Update to Python 3.7 - Add colorlog to pip packages diff --git a/check_config/Dockerfile b/check_config/Dockerfile index 707a04b..b69e6ba 100644 --- a/check_config/Dockerfile +++ b/check_config/Dockerfile @@ -1,13 +1,9 @@ ARG BUILD_FROM FROM $BUILD_FROM -# Setup base -RUN apk add --no-cache \ - jq \ - gcc \ - libffi-dev \ - openssl-dev \ - musl-dev \ +# Add Hass.io wheels repository +ARG BUILD_ARCH +ENV WHEELS_LINKS=https://wheels.home-assistant.io/alpine-3.9/${BUILD_ARCH}/ # Copy data COPY run.sh / diff --git a/check_config/README.md b/check_config/README.md new file mode 100644 index 0000000..9439463 --- /dev/null +++ b/check_config/README.md @@ -0,0 +1,79 @@ +# Hass.io Core Add-on: Check Home Assistant configuration + +Check your current configuration against any Home Assistant version. + +![Supports aarch64 Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armhf Architecture][armhf-shield] ![Supports armv7 Architecture][armv7-shield] ![Supports i386 Architecture][i386-shield] + +## About + +You can use this add-on to check whether your configuration files are valid against the +new version of Home Assistant before you actually update your Home Assistant +installation. This add-on will help you avoid errors due to breaking changes, +resulting in a smooth update. + +## Installation + +The installation of this add-on is straightforward and easy to do. + +1. Navigate in your Home Assistant frontend to **Hass.io** -> **Add-on Store**. +2. Find the "Check Home Assistant configuration" add-on and click it. +3. Click on the "INSTALL" button. + +## How to use + +In the configuration section, set the version you want to check your configuration +against. In case you'd like to check your configuration against the latest version of +Home Assistant, just leave `latest`, which is already there as the default. + +1. Start the add-on. +2. Have some patience and wait a couple of minutes. +3. Check the add-on log output to see the result. + +If the log ends with `Configuration check finished - no error found! :)`, +it means the check against your configuration passes on the specified +Home Assistant version. + +## Configuration + +Add-on configuration: + +```json +{ + "version": "latest" +} +``` + +### Option: `version` (required) + +The version of Home Assistant that want to check your configuration against. + +Setting this option to `latest` will result in checking your configuration +against the latest stable release of Home Assistant. + +## Known issues and limitations + +- Currently, this add-on only support checking against Home Assistant >= 0.94 + or less 0.91. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Discord Chat Server][discord]. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +In case you've found an bug, please [open an issue on our GitHub][issue]. + +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[discord]: https://discord.gg/c5DvZ4e +[forum]: https://community.home-assistant.io +[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[issue]: https://github.com/home-assistant/hassio-addons/issues +[reddit]: https://reddit.com/r/homeassistant +[repository]: https://github.com/hassio-addons/repository diff --git a/check_config/config.json b/check_config/config.json index 937d3b5..2918419 100644 --- a/check_config/config.json +++ b/check_config/config.json @@ -1,13 +1,22 @@ { "name": "Check Home Assistant configuration", - "version": "1.0", + "version": "2.0", "slug": "check_config", "description": "Check current Home Assistant configuration against a new version", - "url": "https://home-assistant.io/addons/check_config/", - "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], + "url": "https://github.com/home-assistant/hassio-addons/tree/master/check_config", + "arch": [ + "armhf", + "armv7", + "aarch64", + "amd64", + "i386" + ], "startup": "once", "boot": "manual", - "map": ["config", "ssl"], + "map": [ + "config", + "ssl" + ], "options": { "version": "latest" }, diff --git a/check_config/run.sh b/check_config/run.sh index 4f22541..8020294 100755 --- a/check_config/run.sh +++ b/check_config/run.sh @@ -1,42 +1,48 @@ -#!/bin/bash +#!/usr/bin/env bashio set -e -CONFIG_PATH=/data/options.json +VERSION=$(bashio::config 'version') -VERSION=$(jq --raw-output ".version" $CONFIG_PATH) - -# generate install string -if [ "$VERSION" == "latest" ]; then - CMD="homeassistant" -else - CMD="homeassistant==$VERSION" +# Generate install string +CMD="homeassistant" +if [ "${VERSION}" != "latest" ]; then + CMD="homeassistant==${VERSION}" fi -echo "[Info] Start install HomeAssistant $VERSION" +bashio::log.info "Installing Home Assistant: ${VERSION}..." +bashio::log.info "Please be patient, this might take a few minutes..." -if ! PIP_OUTPUT="$(pip3 install "$CMD")" -then - echo "[Error] Install HomeAssistant: $PIP_OUTPUT" - exit 1 +# Install Home Assistant with the requested version +if ! PIP_OUTPUT="$(pip3 install --find-links "${WHEELS_LINKS}" "${CMD}")"; then + bashio::log.error "An error occurred while installing Home Assistant:" + bashio::log "${PIP_OUTPUT}" + bashio::exit.nok fi - INSTALLED_VERSION="$(pip freeze | grep homeassistant)" +bashio::log.info "Installed Home Assistant ${INSTALLED_VERSION##*=}." -echo "[Info] Installed $INSTALLED_VERSION, check config now" - +# Making an temporary copy of your configuration +bashio::log.info "Making a copy of your configuration for checking..." cp -fr /config /tmp/config -if ! HASS_OUTPUT="$(hass -c /tmp/config --script check_config)" -then - echo "[Error] Wrong config found!" - echo "$HASS_OUTPUT" - exit 1 + +# Start configuration check +bashio::log.info "Checking your configuration against this version..." +if ! HASS_OUTPUT="$(hass -c /tmp/config --script check_config)"; then + # The configuration check exited with an error + bashio::log.error "The configuration check did not pass!" + bashio::log.error "See the output below for more details." + bashio::log "${HASS_OUTPUT}" + bashio::exit.nok fi -if echo "$HASS_OUTPUT" | grep -i ERROR > /dev/null -then - echo "[Error] Found error inside log output!" - echo "$HASS_OUTPUT" - exit 1 +# Scan configuration check output for occurrances of "ERROR" +if echo "${HASS_OUTPUT}" | grep -i ERROR > /dev/null; then + # An "ERROR" occurance has been found, exit with an error + bashio::log.error "Found an error in the log output of the check!" + bashio::log.error "See the output below for more details." + bashio::log "${HASS_OUTPUT}" + bashio::exit.nok fi -echo "[Info] Configuration check finished - no error found! :)" +# You rock! <(*_*)> +bashio::log.info "Configuration check finished - no error found! :)"