defaults: &defaults
  working_directory: ~/repo
  environment:
    JVM_OPTS: -Xmx3200m
    TERM: dumb

version: 2.0

jobs:

  build_gradle:
    <<: *defaults

    docker:
      - image: circleci/openjdk:8-jdk

    steps:
      - checkout
      - restore_cache:
          keys:
          - gradle-dependencies-{{ checksum "build.gradle.kts" }}
          # fallback to using the latest cache if no exact match is found
          - gradle-dependencies-

      - run:
          name: Gradle Dependencies
          command: ./gradlew dependencies

      - save_cache:
          paths: ~/.m2
          key: gradle-dependencies-{{ checksum "build.gradle.kts" }}

      - run:
          name: Run All Checks
          command: ./gradlew check

      - store_artifacts:
          path: build/reports/
          destination: reports
      - store_test_results:
          path: build/reports/

  build_kobalt:
    <<: *defaults

    docker:
      - image: circleci/openjdk:8-jdk

    steps:
      - checkout
      - restore_cache:
          keys:
          - kobalt-dependencies-{{ checksum "kobalt/src/Build.kt" }}
          # fallback to using the latest cache if no exact match is found
          - kobalt-dependencies-

      - run:
          name: Check Versions
          command: ./kobaltw checkVersions

      - save_cache:
          paths: ~/.kobalt
          key: kobalt-dependencies-{{ checksum "kobalt/src/Build.kt" }}

      - run:
          name: Assemble & Test
          command: ./kobaltw assemble test

      - store_artifacts:
          path: kobaltBuild/test-output/
          destination: test-output
      - store_test_results:
          path: kobaltBuild/test-output/

workflows:
  version: 2
  gradle:
    jobs:
      - build_gradle
  kobalt:
    jobs:
      - build_kobalt