git_pull: Prevent plugin from always restarting hass.io even if nothing has changed (#205)

* Prevent git module from always restarting hass.io

`git diff-tree -r --name-only --no-commit-id 'HEAD@{1}' HEAD)` always shows a difference. Getting the commit id prior to pulling is easy and comparing it to the one after pulling makes sure, that checking and restart is only done if ids have changed.

* Forgot to get the OLD_COMMIT id

* Better sorting and further comments

* Pleasing the linter

* Update config.json
This commit is contained in:
Julian Kaffke
2017-12-04 12:44:51 +01:00
committed by Pascal Vizeli
parent 61a6e7cefe
commit 2bc8d29eb4
2 changed files with 14 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "Git pull",
"version": "2.1",
"version": "2.2",
"slug": "git_pull",
"description": "Simple git pull to update the local configuration",
"url": "https://home-assistant.io/addons/git_pull/",

View File

@@ -34,19 +34,25 @@ if [ ! -d /config/.git ]; then
fi
fi
# Run duckdns
# Main programm
cd /config
while true; do
# get actual commit id
OLD_COMMIT=$(git rev-parse HEAD)
# perform pull
echo "[Info] pull from $REPOSITORY"
git pull 2&> /dev/null || true
# get actual (new) commit id
NEW_COMMIT=$(git rev-parse HEAD)
# Enable autorestart of homeassistant
# autorestart of homeassistant if enabled
if [ "$AUTO_RESTART" == "true" ]; then
changed_files="$(git diff-tree -r --name-only --no-commit-id 'HEAD@{1}' HEAD)"
# Files have changed & check config
if [ ! -z "$changed_files" ]; then
# Compare commit ids & check config
if [ "$NEW_COMMIT" != "$OLD_COMMIT" ]; then
echo "[Info] check Home-Assistant config"
if api_ret="$(curl -s -X POST http://hassio/homeassistant/check)"; then
result="$(echo "$api_ret" | jq --raw-output ".result")"
@@ -59,6 +65,8 @@ while true; do
echo "[Error] invalid config!"
fi
fi
else
echo "[Info] Nothing has changed."
fi
fi