#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: chainsaw

on: [push, pull_request]

jobs:
  build:

    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os: [ macos-latest ]

    steps:

      - name: Checkout repository
        uses: actions/checkout@v2

      # JDK 11 is needed for the build.
      # Search `maven-toolchains-plugin` usages for details.
      - name: Setup JDK 11
        uses: actions/setup-java@v2.4.0
        with:
          distribution: temurin
          java-version: 17
          java-package: jdk
          architecture: x64
          cache: maven

      - name: Inspect environment (Linux)
        if: runner.os == 'Linux'
        run: env | grep '^JAVA'

      - name: Inspect environment (Windows)
        if: runner.os == 'Windows'
        run: set java

      - name: Inspect environment (MacOS)
        if: runner.os == 'macOS'
        run: env | grep '^JAVA'

      - name: Maven "build"
        timeout-minutes: 60
        shell: bash
        run: |
          mvn site:site
          mvn install

#      - name: archive dmg
#        timeout-minutes: 60
#        shell: bash
#        run: find target -name \*.dmg
#
#      - uses: actions/upload-artifact@v3
#        with:
#          name: chainsaw.dmg
#          path: target/*.dmg
