# Pony-up!
machine:
  pre:
  # Install gvm
    - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/1.0.22/binscripts/gvm-installer)

  post:
  # Install many go versions
    - gvm install go1.5.1 -B --name=stable

  environment:
  # Convenient shortcuts to "common" locations
    CHECKOUT: /home/ubuntu/$CIRCLE_PROJECT_REPONAME
    BASE_DIR: src/github.com/docker/notary
  # Trick circle brainflat "no absolute path" behavior
    BASE_STABLE: ../../../$HOME/.gvm/pkgsets/stable/global/$BASE_DIR
  # Workaround Circle parsing dumb bugs and/or YAML wonkyness
    CIRCLE_PAIN: "mode: set"

  hosts:
  # Not used yet
    fancy: 127.0.0.1

dependencies:
  pre:
  # Copy the code to the gopath of all go versions
    - >
      gvm use stable &&
      mkdir -p "$(dirname $BASE_STABLE)" &&
      cp -R "$CHECKOUT" "$BASE_STABLE"

  override:
  # Install dependencies for every copied clone/go version
    - gvm use stable && go get github.com/tools/godep:
        pwd: $BASE_STABLE

  post:
  # For the stable go version, additionally install linting tools
    - >
      gvm use stable &&
      go get github.com/golang/lint/golint github.com/wadey/gocovmerge &&
      go install github.com/wadey/gocovmerge
test:
  pre:
  # Output the go versions we are going to test
    - gvm use stable && go version

  # CLEAN
    - gvm use stable && make clean:
        pwd: $BASE_STABLE

  # FMT
    - gvm use stable && make fmt:
        pwd: $BASE_STABLE

  # VET
    - gvm use stable && make vet:
        pwd: $BASE_STABLE

  # LINT
    - gvm use stable && make lint:
        pwd: $BASE_STABLE

  override:
  # Test stable, and report
  # hacking this to be parallel
    - case $CIRCLE_NODE_INDEX in 0) gvm use stable && NOTARY_BUILDTAGS=pkcs11 make ci ;; 1) gvm use stable && NOTARY_BUILDTAGS=none make ci ;; esac:
        parallel: true
        timeout: 600
        pwd: $BASE_STABLE

  post:
    - gvm use stable && make covmerge:
        timeout: 600
        pwd: $BASE_STABLE

  # Report to codecov.io
    # - bash <(curl -s https://codecov.io/bash):
    #     pwd: $BASE_STABLE
