#-------------------------------------------------------------
#
# 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 -ntp -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
