name: ASF-ci

on: [push, pull_request]

env:
  DOTNET_CLI_TELEMETRY_OPTOUT: true
  DOTNET_NOLOGO: true
  DOTNET_SDK_VERSION: 8.0

permissions: {}

jobs:
  main:
    strategy:
      fail-fast: false
      matrix:
        configuration: [Debug, Release]
        os: [macos-latest, ubuntu-latest, windows-latest]

    runs-on: ${{ matrix.os }}

    steps:
    - name: Checkout code
      uses: actions/checkout@v4.1.1
      with:
        show-progress: false
        submodules: recursive

    - name: Setup .NET Core
      uses: actions/setup-dotnet@v4.0.0
      with:
        dotnet-version: ${{ env.DOTNET_SDK_VERSION }}

    - name: Verify .NET Core
      run: dotnet --info

    - name: Build ${{ matrix.configuration }} ArchiSteamFarm and other projects
      run: dotnet build -c "${{ matrix.configuration }}" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo

    - name: Run ${{ matrix.configuration }} ArchiSteamFarm.Tests
      run: dotnet test ArchiSteamFarm.Tests -c "${{ matrix.configuration }}" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo

    - name: Upload latest strings for translation on Crowdin
      if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && matrix.configuration == 'Release' && startsWith(matrix.os, 'ubuntu-') }}
      uses: crowdin/github-action@v1.20.2
      with:
        crowdin_branch_name: main
        config: '.github/crowdin.yml'
        project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }}
        token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}
