Last active
February 13, 2024 08:22
-
-
Save asheliahut/957bc36f292d49d1d21a7c8177b769c3 to your computer and use it in GitHub Desktop.
Run Hacs on Dev HA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# wget -O - https://get.hacs.xyz | bash - | |
set -e | |
RED_COLOR='\033[0;31m' | |
GREEN_COLOR='\033[0;32m' | |
GREEN_YELLOW='\033[1;33m' | |
NO_COLOR='\033[0m' | |
declare haPath | |
declare -a paths=( | |
"$PWD" | |
"$PWD/config" | |
"/config" | |
"/homeassistant" | |
"$HOME/.homeassistant" | |
"/usr/share/hassio/homeassistant" | |
) | |
declare currentVersion | |
declare currentYear | |
declare currentMonth | |
declare currentPatch | |
declare targetVersion | |
declare targetYear | |
declare targetMonth | |
declare targetPatch | |
function info () { echo -e "${GREEN_COLOR}INFO: $1${NO_COLOR}";} | |
function warn () { echo -e "${GREEN_YELLOW}WARN: $1${NO_COLOR}";} | |
function error () { echo -e "${RED_COLOR}ERROR: $1${NO_COLOR}"; if [ "$2" != "false" ]; then exit 1;fi; } | |
function checkRequirement () { | |
if [ -z "$(command -v "$1")" ]; then | |
error "'$1' is not installed" | |
fi | |
} | |
checkRequirement "wget" | |
checkRequirement "unzip" | |
info "Trying to find the correct directory..." | |
for path in "${paths[@]}"; do | |
if [ -n "$haPath" ]; then | |
break | |
fi | |
if [ -f "$path/.HA_VERSION" ]; then | |
haPath="$path" | |
fi | |
done | |
if [ -n "$haPath" ]; then | |
info "Found Home Assistant configuration directory at '$haPath'" | |
cd "$haPath" || error "Could not change path to $haPath" | |
if [ ! -d "$haPath/custom_components" ]; then | |
info "Creating custom_components directory..." | |
mkdir "$haPath/custom_components" | |
fi | |
info "Changing to the custom_components directory..." | |
cd "$haPath/custom_components" || error "Could not change path to $haPath/custom_components" | |
info "Downloading HACS" | |
rm -f "$haPath/custom_components/hacs.zip" | |
wget "https://github.com/hacs/integration/releases/latest/download/hacs.zip" | |
if [ -d "$haPath/custom_components/hacs" ]; then | |
warn "HACS directory already exist, cleaning up..." | |
rm -R "$haPath/custom_components/hacs" | |
fi | |
info "Creating HACS directory..." | |
mkdir "$haPath/custom_components/hacs" | |
info "Unpacking HACS..." | |
unzip "$haPath/custom_components/hacs.zip" -d "$haPath/custom_components/hacs" >/dev/null 2>&1 | |
echo | |
info "Verifying versions" | |
targetVersion=$(sed -n -e '/^MINIMUM_HA_VERSION/p' "$haPath/custom_components/hacs/const.py" | cut -d '"' -f 2) | |
currentVersion=$(sed 's/\.dev0$//' "$haPath/.HA_VERSION") | |
info "Current version is ${currentVersion}, minimum version is ${targetVersion}" | |
targetYear=$(echo "${targetVersion}" | cut -d "." -f 1) | |
currentYear=$(echo "${currentVersion}" | cut -d "." -f 1) | |
if [ "${currentVersion}" == "2023.12.0" ]; then | |
rm -R "$haPath/custom_components/hacs" | |
rm -f "$haPath/custom_components/hacs.zip" | |
error "HACS will not work on version 2023.12.0 of Home Assistant, upgrade to 2023.12.1 (or newer) before re-running this script." | |
fi | |
echo | |
info "Removing HACS zip file..." | |
rm -f "$haPath/custom_components/hacs.zip" | |
info "Installation complete." | |
echo | |
info "Remember to restart Home Assistant before you configure it" | |
else | |
echo | |
error "Could not find the directory for Home Assistant" false | |
echo "Manually change the directory to the root of your Home Assistant configuration" | |
echo "With the user that is running Home Assistant" | |
echo "and run the script again" | |
exit 1 | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment