# Copyright 2020 Google LLC
#
# Licensed 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
#
#      https://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: Publish Documentation

on:
  workflow_dispatch:
  schedule:
    # Every working day at 12pm UTC
    - cron: '0 12 * * 1-5'

jobs:
  linux:
    runs-on: ubuntu-18.04
    env:
      IREE_DOC_BUILD_DIR: build-docs
    steps:
      - name: Setup Bazel
        uses: abhinavsingh/setup-bazel@v3
        with:
          version: 3.3.1
      - name: Checking out repository
        uses: actions/checkout@v2
        with:
          token: ${{ secrets.GITHUB_WRITE_ACCESS_TOKEN }}
      - name: Initializing submodules
        run: ./scripts/git/submodule_versions.py init
      - name: Installing Ninja build
        uses: seanmiddleditch/gha-setup-ninja@v3
      - name: Building documentation
        run: |
          ./build_tools/cmake/build_docs.sh
          # Patch the MarkDown files with front matter for rendering
          ./scripts/prepare_doc_publication.py ${IREE_DOC_BUILD_DIR}/doc
      - name: Fetching gh-pages branch
        run: |
          git fetch origin gh-pages
      - name: Updating gh-pages branch
        run: |
          git checkout -f gh-pages
          cp -rf ${IREE_DOC_BUILD_DIR}/doc/* docs/
          # The index.md will be the landing page. It should be placed in the
          # top directory.
          mv -f docs/index.md .
          git add docs/ index.md
          echo "has_diff=false" >> $GITHUB_ENV
          git diff --cached --exit-code || echo "has_diff=true" >> $GITHUB_ENV
      - name: Committing updates
        if: env.has_diff == 'true'
        run: |
          git config --local user.email "iree-github-actions-bot@google.com"
          git config --local user.name "Doc Publish Action"
          git commit -am "Automatically update GitHub Pages"
      - name: Pushing changes
        if: env.has_diff == 'true'
        uses: ad-m/github-push-action@v0.5.0
        with:
          github_token: ${{ secrets.GITHUB_WRITE_ACCESS_TOKEN }}
          branch: gh-pages
