#!/bin/bash

set -eo pipefail

# KUBE_CONFIG can point to a kubeconfig file or
# the standard kubectl config directory.
KUBE_CONFIG=${KUBE_CONFIG:-$HOME/.kube/config}
GCLOUD_CONFIG=${GCLOUD_CONFIG:-$HOME/.config/gcloud}
EXTRA_DOCKER_PARAMS=${EXTRA_DOCKER_PARAMS:-}
MARKETPLACE_TOOLS_TAG=${MARKETPLACE_TOOLS_TAG:-latest}
MARKETPLACE_TOOLS_IMAGE=${MARKETPLACE_TOOLS_IMAGE:-gcr.io/cloud-marketplace-tools/k8s/dev}

kube_mount=""
if [[ -f "${KUBE_CONFIG}" ]]; then
  # Mount as a file.
  kube_mount=(--mount "type=bind,source=${KUBE_CONFIG},target=/mount/config/.kube/config,readonly")
elif [[ -d "${KUBE_CONFIG}" ]]; then
  # Mount as a directory.
  kube_mount=(--mount "type=bind,source=${KUBE_CONFIG},target=/mount/config/.kube,readonly")
fi
gcloud_mount=""
if [[ -e "${GCLOUD_CONFIG}" ]]; then
  gcloud_mount=(--mount "type=bind,source=${GCLOUD_CONFIG},target=/mount/config/.config/gcloud,readonly")
fi

docker run \
  --mount "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock,readonly" \
  --net=host \
  ${kube_mount[*]} \
  ${gcloud_mount[*]} \
  ${EXTRA_DOCKER_PARAMS[*]} \
  --rm \
  "${MARKETPLACE_TOOLS_IMAGE}:${MARKETPLACE_TOOLS_TAG}" \
  "$@"
