Skip to content

Instantly share code, notes, and snippets.

@asheliahut
Last active February 13, 2024 08:22
Show Gist options
  • Save asheliahut/957bc36f292d49d1d21a7c8177b769c3 to your computer and use it in GitHub Desktop.
Save asheliahut/957bc36f292d49d1d21a7c8177b769c3 to your computer and use it in GitHub Desktop.
Run Hacs on Dev HA
#!/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