hassio-build/install/hassio_install.ps1
Sytone da899e64fd HASS.io on Windows (#18)
* First draft of PowerShell Installer.

* Refined approach to install and service
Used a powershell script for service creation that I have used in the past to make it simpler and will be modifying it to be the control process as well.

* Path cleanup and ready for inital review.
2017-06-30 15:20:17 +02:00

107 lines
3.7 KiB
PowerShell

#requires -version 4.0
#requires -runasadministrator
param (
[string]
$DataSharePath = "/usr/share/hassio",
[string]
$BinaryLocation = "$($env:ALLUSERSPROFILE)\hassio",
[string]
$HassIoSourceUrlRoot = "https://raw.githubusercontent.com/home-assistant/hassio-build",
[string]
$HassIoSourceBranch = "master",
[Switch]
$Torch
)
# Setup Variables
$URL_VERSION="https://raw.githubusercontent.com/home-assistant/hassio/master/version.json"
$URL_HASSIO_SERVICE="$HassIoSourceUrlRoot/$HassIoSourceBranch/install/service/hassio_supervisor.ps1"
$DOCKER_REPO="homeassistant"
$HOMEASSISTANT_DOCKER="$DOCKER_REPO/qemux86-64-homeassistant"
$HASSIO_DOCKER="$DOCKER_REPO/amd64-hassio-supervisor"
Write-Host "`n------------------------------------------" -ForegroundColor White
Write-Host "- HASS.IO Installer for Windows -" -ForegroundColor White
Write-Host "- This will install the hass.io system -" -ForegroundColor White
Write-Host "- on docker in a windows environemnt. -" -ForegroundColor White
Write-Host "------------------------------------------" -ForegroundColor White
# Read infos from web
$HASSIO_VERSION= (ConvertFrom-Json (Invoke-WebRequest -Uri $URL_VERSION).Content).hassio
$GENERIC_HC_VERSION= (ConvertFrom-Json (Invoke-WebRequest -Uri $URL_VERSION).Content).generic
Write-Host "`n[INFO] Version Information"
Write-Host "HASSIO_VERSION = $HASSIO_VERSION"
Write-Host "GENERIC_HC_VERSION = $GENERIC_HC_VERSION"
if($Torch) {
Write-Host "Warning. This will torch all areas before installation starts. You WILL lose data..."
Write-Host " -- The Docker containers hassio_supervisor and homeassistant will be completly deleted. -- "
Read-Host -Prompt "LAST CHANCE. Press CTRL-C to about this now!!!"
if((Test-Path -Path $BinaryLocation)) {
& $BinaryLocation\hassio_supervisor.ps1 -Remove
Remove-Item -Path $BinaryLocation -Recurse -Force
}
docker rm hassio_supervisor -f
docker rmi "$($HASSIO_DOCKER)"
docker rm homeassistant -f
docker rmi "$($HOMEASSISTANT_DOCKER)"
}
if(!(Test-Path -Path $BinaryLocation)) {
Write-Host "[INFO] Creating the binary location @ $BinaryLocation"
New-Item -Path $BinaryLocation -ItemType Directory | Out-Null
}
$hassIoConfiguration = Join-Path $BinaryLocation 'configuration.json'
##
# Install supervisor
Write-Host "[INFO] Install supervisor docker"
docker pull "$($HASSIO_DOCKER):$($HASSIO_VERSION)"
docker tag "$($HASSIO_DOCKER):$($HASSIO_VERSION)" "$($HASSIO_DOCKER):latest"
##
# Download service script
Write-Host "[INFO] Downloading service script to $BinaryLocation\hassio_supervisor.ps1"
(Invoke-WebRequest -Uri "$URL_HASSIO_SERVICE").Content | Set-Content -Path "$BinaryLocation\hassio_supervisor.ps1" -Encoding UTF8
##
# Generate runtime configuration
Write-Host "[INFO] Generating configuration: $hassIoConfiguration"
$defaultConfiguration = "{
`"datapath`":`"$DataSharePath`",
`"home_assistant_docker`":`"$HOMEASSISTANT_DOCKER`",
`"hassio_supervisor_docker`":`"$HASSIO_DOCKER`"
}"
Write-Host "[INFO] ... $defaultConfiguration "
$defaultConfiguration | Set-Content -Path $hassIoConfiguration -Encoding UTF8
##
# Installing Service
Write-Host "[INFO] Installing service."
$status = & $BinaryLocation\hassio_supervisor.ps1 -status
Write-Host "[INFO] Service Current Status: $status"
if($status -ne "Not Installed") {
Write-Host "[INFO] Removing existing service."
& $BinaryLocation\hassio_supervisor.ps1 -Remove
}
& $BinaryLocation\hassio_supervisor.ps1 -Setup
##
# Starting Service
Write-Host "[INFO] Starting hass.io Service"
& $BinaryLocation\hassio_supervisor.ps1 -Start