version: 2

jobs:
  bootstrap:
    macos:
      xcode: "9.2.0"
    working_directory: ~/src/git-lfs
    steps:
      - checkout
      - run: brew update
      - run: brew upgrade go || brew install go
      - run: brew upgrade git || brew install git
      - run: brew upgrade gettext || brew install gettext
      - run:
          command: git clone https://github.com/git/git.git git-source
          working_directory: ~/src/git-lfs
      - run: echo "export GOPATH=$HOME/go" >> $BASH_ENV
      - save_cache:
          key: git-lfs-{{ .Branch }}-{{ .Revision }}
          paths:
            - /usr/local/Cellar
            - ~/src/git-lfs
            - ~/go

  build_with_system_git:
    macos:
      xcode: "9.2.0"
    working_directory: ~/src/git-lfs
    environment:
      GIT_SOURCE_REPO: https://github.com/git/git.git
    steps:
      - restore_cache:
          key: git-lfs-{{ .Branch }}-{{ .Revision }}
      - run: echo go gettext | xargs brew link --force
      - run: echo "export GOPATH=$HOME/go" >> $BASH_ENV
      - run: echo "export PATH=$HOME/bin:$GOPATH/bin:$PATH" >> $BASH_ENV
      - run: echo "export GIT_LFS_TEST_DIR=$HOME/git-lfs-tests" >> $BASH_ENV
      - run: script/cibuild

  build_with_earliest_supported_git:
    macos:
      xcode: "9.2.0"
    working_directory: ~/src/git-lfs
    environment:
      GIT_EARLIEST_SUPPORTED_VERSION: v2.0.0
      GIT_SOURCE_REPO: https://github.com/git/git.git
    steps:
      - restore_cache:
          key: git-lfs-{{ .Branch }}-{{ .Revision }}
      - run: echo go gettext | xargs brew link --force
      - run:
          command: ./script/install-git-source "$GIT_EARLIEST_SUPPORTED_VERSION"
          environment:
            NO_OPENSSL: YesPlease
            APPLE_COMMON_CRYPTO: YesPlease
      - run: echo "export GOPATH=$HOME/go" >> $BASH_ENV
      - run: echo "export PATH=$HOME/bin:$GOPATH/bin:$PATH" >> $BASH_ENV
      - run: echo "export GIT_LFS_TEST_DIR=$HOME/git-lfs-tests" >> $BASH_ENV
      - run: script/cibuild

  build_with_latest_git:
    macos:
      xcode: "9.2.0"
    working_directory: ~/src/git-lfs
    environment:
      GIT_LATEST_SOURCE_BRANCH: master
      GIT_SOURCE_REPO: https://github.com/git/git.git
    steps:
      - restore_cache:
          key: git-lfs-{{ .Branch }}-{{ .Revision }}
      - run: echo go gettext | xargs brew link --force
      - run:
          command: ./script/install-git-source "$GIT_LATEST_SOURCE_BRANCH"
          environment:
            NO_OPENSSL: YesPlease
            APPLE_COMMON_CRYPTO: YesPlease
      - run: echo "export GOPATH=$HOME/go" >> $BASH_ENV
      - run: echo "export PATH=$HOME/bin:$GOPATH/bin:$PATH" >> $BASH_ENV
      - run: echo "export GIT_LFS_TEST_DIR=$HOME/git-lfs-tests" >> $BASH_ENV
      - run: script/cibuild

workflows:
  version: 2
  build:
    jobs:
      - bootstrap
      - build_with_earliest_supported_git:
          requires:
            - bootstrap
      - build_with_latest_git:
          requires:
            - bootstrap
      - build_with_system_git:
          requires:
            - bootstrap
