#!/bin/bash

set -e

# ensure gosub is installed (this will recompile it only if necessary)
go get github.com/vito/gosub
go install github.com/vito/gosub

function sync_package() {
  bosh_pkg=${1}

  shift

  (
    set -e

    cd packages/${bosh_pkg}

    {
      cat spec | grep -v '# gosub'

      for package in $(gosub list "$@"); do
        repo=$(echo ${2} | cut -f1-3 -d/)
        if [ -d "../../src/${repo}/Godeps/_workspace/src/${package}" ]; then
          package="${repo}/Godeps/_workspace/src/${package}"
        fi
        echo ${package} | sed -e 's/\(.*\)/  - \1\/*.go # gosub/g'
      done
    } > spec.new

    mv spec.new spec
  )
}

sync_package auctioneer              -app  github.com/cloudfoundry-incubator/auctioneer/cmd/... &
sync_package converger               -app  github.com/cloudfoundry-incubator/converger/cmd/... &
sync_package docker_app_lifecycle    -app  github.com/cloudfoundry-incubator/docker_app_lifecycle/... &
sync_package executor                -app  github.com/cloudfoundry-incubator/executor/cmd/... &
sync_package file_server             -app  github.com/cloudfoundry-incubator/file-server/cmd/... &
sync_package buildpack_app_lifecycle -app  github.com/cloudfoundry-incubator/buildpack_app_lifecycle/... &
sync_package nsync                   -app  github.com/cloudfoundry-incubator/nsync/cmd/... &
sync_package receptor                -app  github.com/cloudfoundry-incubator/receptor/cmd/... &
sync_package rep                     -app  github.com/cloudfoundry-incubator/rep/cmd/... &
sync_package route_emitter           -app  github.com/cloudfoundry-incubator/route-emitter/cmd/... &
sync_package runtime_metrics_server  -app  github.com/cloudfoundry-incubator/runtime-metrics-server/cmd/... &
sync_package stager                  -app  github.com/cloudfoundry-incubator/stager/cmd/... &
sync_package tps                     -app  github.com/cloudfoundry-incubator/tps/cmd/... &

sync_package etcd \
  -app github.com/coreos/etcd \
  -app github.com/coreos/etcd/etcdctl \
  -app github.com/coreos/etcd/tools/etcd-migrate \
  -app github.com/coreos/etcd/tools/etcd-dump-logs &

GOPATH=$GOPATH/src/github.com/cloudfoundry-incubator/garden-linux/Godeps/_workspace:$GOPATH sync_package garden-linux -app  github.com/cloudfoundry-incubator/garden-linux/... &

sync_package acceptance-tests \
  -test github.com/cloudfoundry-incubator/diego-acceptance-tests/... \
  -app github.com/onsi/ginkgo/ginkgo &

sync_package smoke-tests      -test github.com/cloudfoundry-incubator/diego-smoke-tests &

wait

git diff --name-only packages/*/spec
