name: Build main

on: [push, pull_request]

env:
  DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
  DOTNET_CLI_TELEMETRY_OPTOUT: true

jobs:
  build:
    continue-on-error: true
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]
    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v4
    - name: Init
      run: dotnet fsi build.fsx -p Init
    - name: Build
      run: dotnet fsi build.fsx
    - name: Benchmark
      run: dotnet fsi build.fsx -p Benchmark
    - name: "trigger fantomas-tools action"
      if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/main'
      run: "curl -H 'Accept: application/vnd.github.everest-preview+json' -H 'Authorization: token ${{secrets.FANTOMAS_TOOLS_TOKEN}}' --request POST --data '{\"event_type\": \"fantomas-commit-on-main\"}' https://api.github.com/repos/fsprojects/fantomas-tools/dispatches"
    - name: "Run analyzers"
      run: dotnet msbuild /t:AnalyzeSolution
      continue-on-error: true
      if: matrix.os == 'ubuntu-latest'
    - name: Upload SARIF file
      uses: github/codeql-action/upload-sarif@v3
      if: matrix.os == 'ubuntu-latest'
      with:
        sarif_file: analysisreports
    - name: "Documentation"
      if: matrix.os == 'windows-latest' && github.ref == 'refs/heads/main'
      uses: peaceiris/actions-gh-pages@v4
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./output
    - name: "Publish"
      if: matrix.os == 'windows-latest' && github.ref == 'refs/heads/main'
      env:
        NUGET_KEY: ${{ secrets.NUGET_KEY }}
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: dotnet fsi build.fsx -p Release

  # Builds the project in a dev container
  build-devcontainer:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build and run dev container task
        uses: devcontainers/ci@v0.3
        with:
          runCmd: dotnet fsi build.fsx
