# 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: Build docs

on:
  push:
    branches: ['master']
  pull_request:
    branches: ['master']

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          submodules: recursive
          lfs: true
      - uses: actions/setup-python@v2
        with:
          python-version: '3.6'
      - name: Build Docker image
        run: ./site.sh build-image
      - name: Install node depedencies
        run: ./site.sh install-node-deps
      - name: Install Python depedencies
        run: pip install -r requirements.txt
      - name: Lint
        run: pre-commit run --all-files --show-diff-on-failure
      - name: Build site
        run: ./site.sh build-site
      - name: Optimize artifacts
        if: ${{ github.event_name == 'pull_request' }}
        run: |
          rm -rf ./dist/docs/*
          echo "These files have been deleted to optimize the size of the artifacts." > ./dist/docs/index.html
          echo "Here was the contents of the ./docs-archive directory" >> ./dist/docs/index.html
          find ./dist/
      - uses: actions/upload-artifact@v2
        name: Upload documentation as artifact
        if: ${{ github.event_name == 'pull_request' }}
        with:
          name: airflow-website
          path: './dist'
      - name: Deploy documentation on asf-site branch
        uses: s0/git-publish-subdir-action@develop
        if: ${{ github.event_name == 'push' }}
        env:
          REPO: self
          BRANCH: asf-site
          FOLDER: dist
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
