# 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: Java CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  workflow_dispatch:

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 8
        uses: actions/setup-java@v3
        with:
          java-version: '8'
          distribution: 'temurin'
          cache: maven
      - name: Build with Maven
        run: mvn help:system -U -ntp --batch-mode --show-version --fail-at-end clean install
      - name: basic validations
        run: |
          [ -f target/opennlp-site/index.html  ] && echo 'index.html exist'
          [ -d target/opennlp-site/docs/1.5.3 ] && echo 'docs for 1.5.3 exists'
          [ -d target/opennlp-site/docs/1.6.0 ] && echo 'docs for 1.6.0 exists'
          [ -d target/opennlp-site/docs/1.7.0 ] && echo 'docs for 1.7.0 exists'
          [ -d target/opennlp-site/docs/1.7.1 ] && echo 'docs for 1.7.1 exists'
          [ -d target/opennlp-site/docs/1.7.2 ] && echo 'docs for 1.7.2 exists'
          [ -d target/opennlp-site/docs/1.8.0 ] && echo 'docs for 1.8.0 exists'
          [ -d target/opennlp-site/docs/1.8.1 ] && echo 'docs for 1.8.1 exists'
          [ -d target/opennlp-site/docs/1.8.2 ] && echo 'docs for 1.8.2 exists'
          [ -d target/opennlp-site/docs/1.8.3 ] && echo 'docs for 1.8.3 exists'
          [ -d target/opennlp-site/docs/1.8.4 ] && echo 'docs for 1.8.4 exists'
          [ -d target/opennlp-site/docs/1.9.0 ] && echo 'docs for 1.9.0 exists'
          [ -d target/opennlp-site/docs/1.9.1 ] && echo 'docs for 1.9.1 exists'
          [ -d target/opennlp-site/docs/1.9.2 ] && echo 'docs for 1.9.2 exists'
          [ -d target/opennlp-site/docs/1.9.3 ] && echo 'docs for 1.9.3 exists'
          [ -d target/opennlp-site/docs/1.9.4 ] && echo 'docs for 1.9.4 exists'
          [ -d target/opennlp-site/docs/2.0.0 ] && echo 'docs for 2.0.0 exists'
          [ -d target/opennlp-site/docs/2.1.0 ] && echo 'docs for 2.1.0 exists'
          [ -d target/opennlp-site/docs/2.1.1 ] && echo 'docs for 2.1.0 exists'