Lint all script / make it easy to use with commands (#5)

Add an optional extended description…
This commit is contained in:
Pascal Vizeli 2017-05-05 11:37:04 +02:00 committed by GitHub
parent 245bfb97e7
commit 15de7ee7a1
9 changed files with 363 additions and 152 deletions

View file

@ -1,9 +1,9 @@
#!/bin/bash
set -e
BUILD_CONTAINER_NAME=homeassistant-build-$$
DOCKER_REPO=homeassistant
DOCKER_PUSH="false"
DOCKER_HUB=homeassistant
cleanup() {
echo "[INFO] Cleanup."
@ -19,25 +19,78 @@ cleanup() {
}
trap 'cleanup fail' SIGINT SIGTERM
help () {
cat << EOF
Script for homeassistant docker build
create_homeassistant [options]
Options:
-h, --help
Display this help and exit.
-h, --hub hubname
Set user of dockerhub build.
-m, --machine name
Machine type for HomeAssistant build.
-v, --version X.Y
Version/Tag of HomeAssistant build.
-p, --push
Upload the build to docker hub.
EOF
}
# Parse arguments
while [[ $# -gt 0 ]]; do
key=$1
case $key in
-h|--help)
help
exit 0
;;
-h|--hub)
DOCKER_HUB=$2
shift
;;
-m|--machine)
MACHINE=$2
shift
;;
-v|--version)
DOCKER_TAG=$2
shift
;;
-p|--push)
DOCKER_PUSH="true"
;;
*)
echo "[WARNING] $0 : Argument '$1' unknown. Ignoring."
;;
esac
shift
done
# Sanity checks
if [ "$#" -ne 2 ]; then
echo "Usage: create_homeassistant.sh <HASS_VERS> <MACHINE>"
echo "Optional environment: BUILD_DIR"
if [ -z "$MACHINE" ]; then
echo "[ERROR] please set a machine!"
help
exit 1
fi
if [ -z "$DOCKER_TAG" ]; then
echo "[ERROR] please set a version!"
help
exit 1
fi
# Get the absolute script location
pushd `dirname $0` > /dev/null 2>&1
SCRIPTPATH=`pwd`
pushd "$(dirname "$0")" > /dev/null 2>&1
SCRIPTPATH=$(pwd)
popd > /dev/null 2>&1
HASS_VERS=$1
MACHINE=$2
DOCKER_TAG=$1
DOCKER_IMAGE=${MACHINE}-homeassistant
DOCKER_IMAGE=$DOCKER_HUB/$MACHINE-homeassistant
BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH}
WORKSPACE=${BUILD_DIR}/hass
HASS_GIT=${BUILD_DIR}/hass_git
WORKSPACE=$BUILD_DIR/hass
HASS_GIT=$BUILD_DIR/hass_git
# generate base image
case $MACHINE in
@ -57,38 +110,38 @@ esac
# setup docker
echo "[INFO] Setup docker for homeassistant"
mkdir -p $BUILD_DIR
mkdir -p $WORKSPACE
mkdir -p "$BUILD_DIR"
mkdir -p "$WORKSPACE"
echo "[INFO] load homeassistant"
cp ../../homeassistant/Dockerfile $WORKSPACE/Dockerfile
cp ../../homeassistant/Dockerfile "$WORKSPACE/Dockerfile"
sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" $WORKSPACE/Dockerfile
sed -i "s/%%HASS_VERSION%%/${HASS_VERS}/g" $WORKSPACE/Dockerfile
sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" "$WORKSPACE/Dockerfile"
sed -i "s/%%HASS_VERSION%%/${HASS_VERS}/g" "$WORKSPACE/Dockerfile"
git clone https://github.com/home-assistant/home-assistant $HASS_GIT
cd $HASS_GIT && git checkout $HASS_VERS
cp $HASS_GIT/requirements_all.txt $WORKSPACE/
git clone https://github.com/home-assistant/home-assistant "$HASS_GIT"
cd "$HASS_GIT" && git checkout "$DOCKER_TAG"
cp "$HASS_GIT/requirements_all.txt" "$WORKSPACE/"
# Run build
echo "[INFO] start docker build"
docker stop $BUILD_CONTAINER_NAME 2> /dev/null || true
docker rm --volumes $BUILD_CONTAINER_NAME 2> /dev/null || true
docker run --rm \
-v $WORKSPACE:/docker \
-v "$WORKSPACE":/docker \
-v ~/.docker:/root/.docker \
-e DOCKER_REPO=$DOCKER_REPO \
-e DOCKER_IMAGE=$DOCKER_IMAGE \
-e DOCKER_TAG=$DOCKER_TAG \
-e DOCKER_PUSH=$DOCKER_PUSH \
-e DOCKER_IMAGE="$DOCKER_IMAGE" \
-e DOCKER_TAG="$DOCKER_TAG" \
--name $BUILD_CONTAINER_NAME \
--privileged \
homeassistant/docker-build-env \
/run-docker.sh
echo "[INFO] cleanup WORKSPACE"
cd $BUILD_DIR
rm -rf $WORKSPACE
rm -rf $HASS_GIT
cd "$BUILD_DIR"
rm -rf "$WORKSPACE"
rm -rf "$HASS_GIT"
cleanup
cleanup "okay"
exit 0