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

on:
  pull_request:
    paths:
      - '.github/workflows/docs.yml'
      - '**/*.md'
      - 'docs/**'
      - '.dlc.json'
  schedule:
    - cron: '0 18 * * *'  # TimeZone: UTC 0

concurrency:
  group: doc-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  img-check:
    name: Image Check
    timeout-minutes: 15
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: docs
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.9
        uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - name: Run Dev Relative Reference
        run: python img_utils.py -v dev-syntax
      - name: Run Image Check
        run: python img_utils.py -v check
  dead-link:
    name: Dead Link
    if: (github.event_name == 'schedule' && github.repository == 'apache/dolphinscheduler') || (github.event_name != 'schedule')
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v2
      - run: sudo npm install -g markdown-link-check@3.10.0
      # NOTE: Change command from `find . -name "*.md"` to `find . -not -path "*/node_modules/*" -not -path "*/.tox/*" -name "*.md"`
      # if you want to run check locally
      - run: |
          for file in $(find . -name "*.md"); do
            markdown-link-check -c .dlc.json -q "$file"
          done
