#
# Copyright (c) 2022, 2024 Contributors to the Eclipse Foundation
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0,
# or the Eclipse Distribution License v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#

name: Eclipse Required License Check

on: [push, pull_request]

jobs:
  build:
    name: Build on JDK ${{ matrix.java_version }} with ${{matrix.test_profiles}} profile
    runs-on: ubuntu-latest
    env:
      script-directory: $GITHUB_WORKSPACE/etc/jenkins

    strategy:
      matrix:
        java_version: [ 11 ]
        verify_profiles: [ '-Plicense_check' ]
    continue-on-error: false

    steps:
    - name: Checkout for build
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Set up JDK
      uses: actions/setup-java@v4.1.0
      with:
        distribution: 'zulu'
        java-version: ${{ matrix.java_version }}
    - name: configure JDK
      run: |
        secLoc=`find $JAVA_HOME -name java.security`
        sed -i 's/jdk.tls.disabledAlgorithms/# jdk.tls.disabledAlgorithms/g' -i $secLoc
    - name: Build
      run: mvn -V -U -B ${{matrix.verify_profiles}} org.eclipse.dash:license-tool-plugin:license-check -DexcludeArtifactIds=bsh,jmh-core,jmh-generator-annprocess,swing-layout -pl '!:version-agnostic'
    - name: Upload license-check info
      uses: actions/upload-artifact@v4
      with:
        name: license-summary.txt
        path: target/dash/summary
