parent
9a1a418f7a
commit
b78545661d
@ -0,0 +1,119 @@
|
||||
#
|
||||
# Функция configure() устанавливает HASS Configurator
|
||||
#
|
||||
# Параметры:
|
||||
# $1 = check - проверка обновлений, в противном случае установка или обновление
|
||||
# $2 - возвращает имя модуля для перезагрузки в случае выполненного обновления
|
||||
# Guide: https://github.com/danielperna84/hass-configurator
|
||||
configure() {
|
||||
local action=$1
|
||||
local __result=$2
|
||||
|
||||
local home_dir=/var/calculate/www/hass-configurator
|
||||
local last_ver="$(get_last_ver danielperna84/hass-configurator github)"
|
||||
local work_dir="$home_dir/versions/hass-configurator-$last_ver"
|
||||
local live_dir="$home_dir/hass-configurator-live"
|
||||
local live_ver="$(get_live_ver $live_dir)"
|
||||
|
||||
if [[ $action == 'check' ]]; then
|
||||
if [[ $live_ver == $last_ver ]]; then
|
||||
einfo "hass-configurator: the latest version is installed $live_ver"
|
||||
else
|
||||
einfo "hass-configurator: $last_ver update available, $live_ver installed"
|
||||
eval $__result=1 # наличие обновления
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
# выйдем если все настроено
|
||||
if [[ -e /var/calculate/hass-configurator/settings.conf ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ ! -e $home_dir ]]; then
|
||||
mkdir -p $home_dir
|
||||
chmod 700 $home_dir/versions
|
||||
chown hass-configurator: $home_dir
|
||||
fi
|
||||
|
||||
touch $log_dir/hass-configurator.log
|
||||
chown hass-configurator: $log_dir/hass-configurator.log
|
||||
|
||||
if [[ $live_ver != $last_ver ]]; then
|
||||
if [[ $live_ver == '' ]]; then
|
||||
echo Install HASS Configurator
|
||||
else
|
||||
echo Update Configurator
|
||||
fi
|
||||
|
||||
su - hass-configurator -s /bin/bash -c "$(cat <<- EOF
|
||||
set -ueo pipefail
|
||||
export PATH="/lib/rc/bin:$PATH"
|
||||
|
||||
ebegin Download hass-configurator ${last_ver}
|
||||
wget https://github.com/danielperna84/hass-configurator/archive/refs/tags/${last_ver}.zip \
|
||||
-O hass-configurator-${last_ver}.zip &>>$log_dir/hass-configurator.log
|
||||
eend
|
||||
|
||||
ebegin 'Extract the archive'
|
||||
unzip -q -d versions hass-configurator-${last_ver}.zip
|
||||
rm hass-configurator-${last_ver}.zip
|
||||
ln -sf versions/hass-configurator-${last_ver} hass-configurator-live
|
||||
eend
|
||||
|
||||
ebegin 'Create a virtualenv'
|
||||
python -m venv hass-configurator-live/.venv
|
||||
eend
|
||||
|
||||
ebegin 'Activate environment'
|
||||
source hass-configurator-live/.venv/bin/activate
|
||||
eend
|
||||
|
||||
ebegin 'Upgrade pip and wheel'
|
||||
pip install --upgrade pip wheel &>>$log_dir/hass-configurator.log
|
||||
eend
|
||||
|
||||
ebegin 'Install HASS Configurator'
|
||||
pip install hass-configurator &>>$log_dir/hass-configurator.log
|
||||
eend
|
||||
EOF
|
||||
)"
|
||||
fi
|
||||
|
||||
if [[ $live_ver != '' ]]; then
|
||||
eval $__result=hass-assistant # демон который следует перезагрузить
|
||||
else
|
||||
ebegin 'Setup HASS Configurator'
|
||||
cat > /var/calculate/hass-configurator/settings.conf << EOF
|
||||
{
|
||||
"LISTENIP": "127.0.0.1",
|
||||
"PORT": 3218,
|
||||
"GIT": false,
|
||||
"BASEPATH": null,
|
||||
"ENFORCE_BASEPATH": false,
|
||||
"SSL_CERTIFICATE": null,
|
||||
"SSL_KEY": null,
|
||||
"IGNORE_SSL": false,
|
||||
"HASS_API": "http://127.0.0.1:8123/api/",
|
||||
"HASS_WS_API": null,
|
||||
"HASS_API_PASSWORD": null,
|
||||
"USERNAME": null,
|
||||
"PASSWORD": null,
|
||||
"ALLOWED_NETWORKS": [],
|
||||
"ALLOWED_DOMAINS": [],
|
||||
"BANNED_IPS": [],
|
||||
"BANLIMIT": 0,
|
||||
"IGNORE_PATTERN": [],
|
||||
"DIRSFIRST": false,
|
||||
"SESAME": null,
|
||||
"SESAME_TOTP_SECRET": null,
|
||||
"VERIFY_HOSTNAME": null,
|
||||
"ENV_PREFIX": "HC_",
|
||||
"NOTIFY_SERVICE": "persistent_notification.create"
|
||||
}
|
||||
EOF
|
||||
chown hass-configurator: /var/calculate/hass-configurator/settings.conf
|
||||
eend
|
||||
fi
|
||||
}
|
||||
|
@ -1,71 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Guide: https://github.com/danielperna84/hass-configurator
|
||||
|
||||
set -ueo pipefail
|
||||
export PATH="/lib/rc/bin:$PATH"
|
||||
|
||||
test -e ~/hass-configurator-live && exit
|
||||
|
||||
SCRIPT=$(readlink -f $0)
|
||||
[[ $UID == 0 ]] && exec su - hass-configurator -s /bin/bash -c "$SCRIPT"
|
||||
|
||||
. /var/db/repos/container/scripts/functions.sh
|
||||
. /var/db/repos/calculate/scripts/ini.sh
|
||||
|
||||
cd
|
||||
ver=$(curl -s https://api.github.com/repos/danielperna84/hass-configurator/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest hass-configurator version is ${ver}"
|
||||
[[ -z $ver ]] && eerror 'The latest version of hass-configurator is not defined!'
|
||||
|
||||
wget -q https://github.com/danielperna84/hass-configurator/archive/refs/tags/${ver}.zip -O hass-configurator-${ver}.zip
|
||||
einfo 'Extract the archive'
|
||||
unzip -q -d versions hass-configurator-${ver}.zip
|
||||
rm hass-configurator-${ver}.zip
|
||||
ln -sf versions/hass-configurator-${ver} hass-configurator-live
|
||||
|
||||
einfo 'Install python env'
|
||||
python -m venv hass-configurator-live/.venv
|
||||
|
||||
einfo 'Activate environment'
|
||||
. hass-configurator-live/.venv/bin/activate
|
||||
|
||||
einfo 'Upgrade pip and wheel'
|
||||
pip install --upgrade pip wheel
|
||||
|
||||
einfo 'Install HASS Configurator'
|
||||
pip install hass-configurator
|
||||
|
||||
echo '. ~/hass-configurator-live/.venv/bin/activate' >> .bashrc
|
||||
echo '. ~/hass-configurator-live/.venv/bin/activate' >> .bash_profile
|
||||
|
||||
ebegin 'Setup HASS Configurator'
|
||||
if [[ ! -e /etc/hass-configurator/settings.conf ]]; then
|
||||
cat > /etc/hass-configurator/settings.conf << EOF
|
||||
{
|
||||
"LISTENIP": "127.0.0.1",
|
||||
"PORT": 3218,
|
||||
"GIT": false,
|
||||
"BASEPATH": null,
|
||||
"ENFORCE_BASEPATH": false,
|
||||
"SSL_CERTIFICATE": null,
|
||||
"SSL_KEY": null,
|
||||
"IGNORE_SSL": false,
|
||||
"HASS_API": "http://127.0.0.1:8123/api/",
|
||||
"HASS_WS_API": null,
|
||||
"HASS_API_PASSWORD": null,
|
||||
"USERNAME": null,
|
||||
"PASSWORD": null,
|
||||
"ALLOWED_NETWORKS": [],
|
||||
"ALLOWED_DOMAINS": [],
|
||||
"BANNED_IPS": [],
|
||||
"BANLIMIT": 0,
|
||||
"IGNORE_PATTERN": [],
|
||||
"DIRSFIRST": false,
|
||||
"SESAME": null,
|
||||
"SESAME_TOTP_SECRET": null,
|
||||
"VERIFY_HOSTNAME": null,
|
||||
"ENV_PREFIX": "HC_",
|
||||
"NOTIFY_SERVICE": "persistent_notification.create"
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
eend
|
Loading…
Reference in new issue