#-------------------------------------------------------------
#
# 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: Documentation

on: [push, pull_request]

jobs:
  documentation1:
    runs-on: ubuntu-latest
    name: Documentation Java
    steps:
    - name: Checkout Repository
      uses: actions/checkout@v2

    - name: Setup Java 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8

    - name: Cache Maven Dependencies
      uses: actions/cache@v1
      with:
        path: ~/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
        restore-keys: |
          ${{ runner.os }}-maven-
  
    - name: Make Documentation SystemDS Java
      run: mvn -P distribution package

  documentation2:
    runs-on: ubuntu-latest
    name: Documentation Python
    steps:
    - name: Checkout Repository
      uses: actions/checkout@v2

    - name: Setup Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
        architecture: 'x64'

    - name: Cache Pip Dependencies
      uses: actions/cache@v1
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-docs-${{ hashFiles('src/main/python/docs/requires-docs.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-docs-

    - name: Install Dependencies
      run: |
        cd src/main/python/docs
        python3 -m pip install -r requires-docs.txt

    - name: Make Documentation SystemDS-Python
      run: |
        cd src/main/python/docs
        make html
