name: Checks

on:
  push:
  pull_request:

jobs:
  markdownlint:
    runs-on: ubuntu-latest
    steps:
    - name: check out code
      uses: actions/checkout@v2

    - name: install dependencies
      run: npm install

    - name: Check file and folder names
      run: make check-file-and-folder-names-in-docs

    - name: run markdownlint
      run: make markdownlint

  yamllint:
    runs-on: ubuntu-latest
    steps:
    - name: check out code
      uses: actions/checkout@v2

    - uses: actions/setup-python@v2

    - name: install yamllint
      run: make install-yamllint

    - name: run yamllint
      run: yamllint . -f github

  markdown-link-check:
    runs-on: ubuntu-latest
    steps:
    - name: check out code
      uses: actions/checkout@v2

    - name: install dependencies
      run: npm install

    - name: run markdown-link-check
      run: make markdown-link-check

  markdown-toc-check:
    runs-on: ubuntu-latest
    steps:
    - name: check out code
      uses: actions/checkout@v2

    - name: install dependencies
      run: npm install

    - name: run markdown-toc
      run: make markdown-toc

    - name: validate markdown-toc
      run: git diff --exit-code ':*.md' || (echo 'Generated markdown Table of Contents is out of date, please run "make markdown-toc" and commit the changes in this PR.' && exit 1)

  misspell:
    runs-on: ubuntu-latest
    steps:
    - name: check out code
      uses: actions/checkout@v2

    - name: run misspell
      run: make misspell

  semantic-conventions:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: verify semantic convention tables
      run: make table-check

  semantic-conventions-registry:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: verify registry tables
      run: |
        make attribute-registry-generation
        git diff --exit-code './docs/attributes-registry/*.md' || (echo 'Attribute registry markdown is out of date, please run "make attribute-registry-generation" and commit the changes in this PR.' && exit 1)

  schemas-check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: verify schemas
      run: make schema-check

  areas-dropdown-check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Components dropdown in issue templates
      run: |
        make generate-gh-issue-templates
        git diff --exit-code '.github/ISSUE_TEMPLATE' || (echo 'Dropdowns in issue templates is out of date, please run "make generate-gh-issue-templates" and commit the changes in this PR. Please note, if you are running it on Mac OS X, please make sure to use GNU version of sed instead of default "sed".' && exit 1)

  policies-check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: verify semantic conventions yaml definitions
      run: make check-policies

  polices-test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: verify semantic conventions yaml definitions
      run: make test-policies

  # TODO: Remove this once policies-check is the only enforcement on github.
  semantic-conventions-compatibility:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: verify semantic convention compatibility with latest released version
      run: make compatibility-check
