FROM golang:1-alpine

ARG npm_token

RUN apk update &&\
  apk add unzip git httpie bind-tools curl zsh vim bash python py-pip shadow

# zsh
RUN git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh \
  && cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && chsh -s /bin/zsh

# Installing the Docker Compose
ENV DOCKER_COMPOSE_VERSION 1.16.1
RUN pip install docker-compose==1.21.1
# RUN curl -L https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose &&\
#   chmod +x /usr/local/bin/docker-compose

# Installing the Docker Machine
ENV DOCKER_MACHINE_VERSION 0.13.0
RUN curl -L https://github.com/docker/machine/releases/download/v$DOCKER_MACHINE_VERSION/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine &&\
  chmod +x /usr/local/bin/docker-machine

ENV VAULT_VERSION 0.9.6
RUN curl -OL https://releases.hashicorp.com/vault/$VAULT_VERSION/vault_"$VAULT_VERSION"_linux_amd64.zip &&\
  unzip vault_"$VAULT_VERSION"_linux_amd64.zip &&\
  mv vault /usr/local/bin/vault

ENV HELM_VERSION 2.9.0
RUN curl -OL https://storage.googleapis.com/kubernetes-helm/helm-v$HELM_VERSION-linux-amd64.tar.gz && \
  tar xvzf helm-v$HELM_VERSION-linux-amd64.tar.gz &&\
  mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64 &&\
  rm helm-v$HELM_VERSION-linux-amd64.tar.gz

ENV DOCKER_VERSION 18.03.1-ce
RUN curl -sL https://howtowhale.github.io/dvm/downloads/latest/install.sh | sh
RUN bash -c "source /root/.dvm/dvm.sh && dvm install $DOCKER_VERSION && which docker && mv /root/.dvm/bin/docker/$DOCKER_VERSION/docker /usr/local/bin/docker"

ENV GOOGLE_CLOUD_SDK_VERSION 199.0.0
RUN curl -OL https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-$GOOGLE_CLOUD_SDK_VERSION-linux-x86_64.tar.gz && \
  tar xvzf google-cloud-sdk-$GOOGLE_CLOUD_SDK_VERSION-linux-x86_64.tar.gz &&\
  ./google-cloud-sdk/install.sh --rc-path /root/.zshrc --path-update true --additional-components kubectl -q &&\
  rm google-cloud-sdk-$GOOGLE_CLOUD_SDK_VERSION-linux-x86_64.tar.gz

ENV NODE_VERSION=8.7.0 NPM_VERSION=6.4.1 NODE_ENV=development CONSOLE=yes

RUN apk add --update nodejs nodejs-npm && npm i -g "npm@${NPM_VERSION}"

ENV NPM_TOKEN $npm_token
RUN echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> /root/.npmrc

RUN npm i -g semver json git-last conventional-recommended-bump conventional-changelog-angular @heathmont/envs@1.2.1-rc.9
RUN apk add tree jq

ENV WORKDIR               /usr/console
WORKDIR $WORKDIR

ADD .                     $WORKDIR/

RUN npm ci
RUN rm /root/.npmrc && rm -rf /usr/local/go && npm link

ENV PATH                  $PATH:/usr/local/bin:/go/google-cloud-sdk/bin
ENV KUBECONFIG=$WORKDIR/.kube/config CLOUDSDK_CONFIG=$WORKDIR/.gcloud/.config HELM_HOME=$WORKDIR/.helm
