#!/bin/bash

# A non-installed actool can be used, for example:
# ACTOOL=../../appc/spec/bin/actool
ACTOOL=${ACTOOL:-actool}

IMAGEDIR=${IMAGEDIR:-bin/image-aci}

VERSION=$1

if [ ! -x "$ACTOOL" ] ; then
    echo "actool ($ACTOOL) is not executable"
    exit 1
fi

if [ ! -x bin/etcd ] ; then
    echo "bin/etcd not found. Is it compiled?"
    exit 1
fi

if [ -z "$VERSION" ] ; then
    echo "Usage: scripts/build-aci VERSION"
    exit 1
fi

mkdir -p $IMAGEDIR/rootfs
if [ ! -d $IMAGEDIR/rootfs -o ! -x $IMAGEDIR/rootfs ]; then
    echo "$IMAGEDIR/rootfs is not a writeable directory"
    exit 1
fi

if [ -n "$(ls -A $IMAGEDIR/rootfs)" ]; then
    echo "$IMAGEDIR/rootfs is not empty"
    exit 1
fi

cp bin/etcd bin/etcdctl $IMAGEDIR/rootfs/
cp README.md            $IMAGEDIR/rootfs/
cp etcdctl/README.md    $IMAGEDIR/rootfs/README-etcdctl.md
cp -r Documentation     $IMAGEDIR/rootfs/

cat <<DF > $IMAGEDIR/manifest
{
    "acVersion": "0.5.1",
    "acKind": "ImageManifest",
    "name": "coreos.com/etcd",
    "labels": [
        {"name": "os", "value": "linux"},
        {"name": "arch", "value": "amd64"},
        {"name": "version", "value": "${VERSION}"}
    ],
    "app": {
        "environment": [
             {
                    "name": "ETCD_DATA_DIR",
                    "value": "/data-dir"
             }
        ],
        "exec": [
             "/etcd"
        ],
        "user": "0",
        "group": "0",
        "mountPoints": [
             {
                    "name": "data-dir",
                    "path": "/data-dir"
             }
        ],
        "ports": [
            {
                "name": "legacy-client",
                "port": 4001,
                "protocol": "tcp"
            },
            {
                "name": "client",
                "port": 2379,
                "protocol": "tcp"
            },
            {
                "name": "legacy-peer",
                "port": 7001,
                "protocol": "tcp"
            },
            {
                "name": "peer",
                "port": 2380,
                "protocol": "tcp"
            }
        ]
    }
}
DF

mkdir -p $IMAGEDIR/rootfs/etc/
cat <<DF > $IMAGEDIR/rootfs/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
DF

$ACTOOL build -overwrite=true $IMAGEDIR bin/etcd-${1}-linux-amd64.aci
