1
mirror of https://github.com/home-assistant/core synced 2024-09-15 17:29:45 +02:00
ha-core/virtualization/vagrant/provision.sh
Alexander Fortin 44ec6b056e Update Vagrant provision.sh (#6236)
- Bugfix: with f63a79ee we removed `script/home-assistant@.service`
  systemd unit file, which is used by Vagrant box to start/stop hass
- simplify interaction with Vagrant, provision.sh now is the only
  entry point and doesn't need the user to touch/remove files in
  order to change provisioner behavior
2017-03-01 23:15:30 -08:00

118 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
set -e
readonly SETUP_DONE='/home-assistant/virtualization/vagrant/setup_done'
readonly RUN_TESTS='/home-assistant/virtualization/vagrant/run_tests'
readonly RESTART='/home-assistant/virtualization/vagrant/restart'
usage() {
echo '############################################################
Use `./provision.sh` to interact with HASS. E.g:
- setup the environment: `./provision.sh start`
- restart HASS process: `./provision.sh restart`
- run test suit: `./provision.sh tests`
- destroy the host and start anew: `./provision.sh recreate`
Official documentation at https://home-assistant.io/docs/installation/vagrant/
############################################################'
}
print_done() {
echo '############################################################
HASS running => http://localhost:8123/
'
}
setup_error() {
echo '############################################################
Something is off... maybe setup did not complete properly?
Please ensure setup did run correctly at least once.
To run setup again: `./provision.sh setup`
############################################################'
exit 1
}
setup() {
local hass_path='/root/venv/bin/hass'
local systemd_bin_path='/usr/bin/hass'
# Setup systemd
cp /home-assistant/virtualization/vagrant/home-assistant@.service \
/etc/systemd/system/home-assistant.service
systemctl --system daemon-reload
systemctl enable home-assistant
systemctl stop home-assistant
# Install packages
apt-get update
apt-get install -y git rsync python3-dev python3-pip libssl-dev libffi-dev
pip3 install --upgrade virtualenv
virtualenv ~/venv
source ~/venv/bin/activate
pip3 install --upgrade tox
/home-assistant/script/setup
if ! [ -f $systemd_bin_path ]; then
ln -s $hass_path $systemd_bin_path
fi
touch $SETUP_DONE
print_done
usage
}
run_tests() {
rm -f $RUN_TESTS
echo '############################################################'
echo; echo "Running test suite, hang on..."; echo; echo
if ! systemctl stop home-assistant; then
setup_error
fi
source ~/venv/bin/activate
rsync -a --delete \
--exclude='*.tox' \
--exclude='*.git' \
/home-assistant/ /home-assistant-tests/
cd /home-assistant-tests && tox || true
echo '############################################################'
}
restart() {
echo "Restarting Home Assistant..."
if ! systemctl restart home-assistant; then
setup_error
else
echo "done"
fi
rm $RESTART
}
main() {
# If a parameter is provided, we assume it's the user interacting
# with the provider script...
case $1 in
"setup") rm -f setup_done; vagrant up --provision && touch setup_done; exit ;;
"tests") touch run_tests; vagrant provision ; exit ;;
"restart") touch restart; vagrant provision ; exit ;;
"start") vagrant up --provision ; exit ;;
"stop") vagrant halt ; exit ;;
"destroy") vagrant destroy -f ; exit ;;
"recreate") rm -f setup_done restart; vagrant destroy -f; \
vagrant up --provision; exit ;;
esac
# ...otherwise we assume it's the Vagrant provisioner
if [ $(hostname) != "contrib-jessie" ]; then usage; exit; fi
if ! [ -f $SETUP_DONE ]; then setup; fi
if [ -f $RESTART ]; then restart; fi
if [ -f $RUN_TESTS ]; then run_tests; fi
if ! systemctl start home-assistant; then
setup_error
fi
}
main $*