#!/usr/bin/bash

if [ "$1" = "-w" ]; then
  wait_for_running=1; shift
fi

declare -A running_containers

while :; do
  running_containers=()
  link_args=""
  missed_args=0

  for running_container_id in $(docker ps -q); do
    running_container_name=$(docker inspect -f '{{.Name}}' ${running_container_id})
    running_container_service_name=$(echo "${running_container_name}" | sed 's/\///g' | sed 's/-i/ /g' | cut -d' ' -f 1)
    running_container_image=$(docker inspect -f '{{.Config.Image}}' ${running_container_id} | tr ':' ' ' | awk '{print $1;}' | tr '/' ' ' | awk '{print $NF;}')
    running_containers[${running_container_service_name}]="${running_container_name}"
  done

  for dep_name in $@; do
    dep_container=${running_containers[${dep_name}]}
    if [ -z "${dep_container}" ]; then
      missed_args=1
    fi
    link_args="${link_args} --link=\"${dep_container}:${dep_name}\""
  done
  
  if [ "${missed_args}" -eq 0 ]; then
    break
  fi

  if [ -z "${wait_for_running}" ]; then
    echo "could not find dependent container!" >&2
    exit 15
  fi

  sleep 1
done

echo ${link_args}