name: D

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

jobs:
  build:
    strategy:
      matrix:
        dc:
          - dmd-latest
          - ldc-latest
          - dmd-beta
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        fetch-depth: 2
    - uses: dlang-community/setup-dlang@v1
      with:
        compiler: ${{ matrix.dc }}
    - name: 'Test'
      run: |
        dub test -c unittest-dip1000
        dub test --build=unittest-cov
        bash <(curl -s https://codecov.io/bash)
  examples:
    runs-on: ubuntu-latest
    needs: build
    steps:
    - uses: actions/checkout@v3
    - uses: dlang-community/setup-dlang@v1
      with:
        compiler: dmd-latest
    - name: 'Build Examples'
      run: |
        dub build dyaml:benchmark
        dub build dyaml:constructor
        dub build dyaml:getting-started
        dub build dyaml:representer
        dub build dyaml:resolver
        dub build dyaml:testsuite
        dub build dyaml:tojson
        dub build dyaml:tokens
        dub build dyaml:yaml_gen
        dub build dyaml:yaml_stats
  ninja:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dlang-community/setup-dlang@v1
      with:
        compiler: dmd-latest
    - name: 'Install dependencies'
      run: |
        sudo apt-get install python3-pip python3-setuptools python3-wheel ninja-build
        sudo pip3 install meson
    - name: 'Build'
      run: |
        export PATH=$PATH:$PWD/.ntmp
        meson build && ninja -j8 -C build
        ninja -j8 -C build test -v
  yaml-test-suite:
    runs-on: ubuntu-latest
    needs: build
    steps:
    - uses: actions/checkout@v3
    - uses: dlang-community/setup-dlang@v1
      with:
        compiler: dmd-latest
    - name: 'Run YAML test suite'
      run: |
        git clone https://github.com/yaml/yaml-test-suite
        dub run dyaml:testsuite