name: Test

on:
  push:
  pull_request:
  workflow_dispatch:

env:
  GO111MODULE: on

permissions:
  contents: read

jobs:


  lic-headers:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v4

      - run: >-
          docker run
          -v $(pwd):/wrk -w /wrk
          ghcr.io/google/addlicense
          -c 'The Cobra Authors'
          -y '2013-2023'
          -l apache
          -ignore '.github/**'
          -check
          .


  golangci-lint:
    permissions:
      contents: read  # for actions/checkout to fetch code
      pull-requests: read  # for golangci/golangci-lint-action to fetch pull requests
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v4

      - uses: actions/setup-go@v5
        with:
          go-version: '^1.22'
          check-latest: true
          cache: true

      - uses: golangci/golangci-lint-action@v8.0.0
        with:
          version: latest
          args: --verbose


  test-unix:
    strategy:
      fail-fast: false
      matrix:
        platform:
        - ubuntu
        - macOS
        go:
        - 17
        - 18
        - 19
        - 20
        - 21
        - 22
        - 23
        - 24
    name: '${{ matrix.platform }} | 1.${{ matrix.go }}.x'
    runs-on: ${{ matrix.platform }}-latest
    steps:

    - uses: actions/checkout@v4

    - uses: actions/setup-go@v5
      with:
        go-version: 1.${{ matrix.go }}.x
        cache: true

    - run: |
        export GOBIN=$HOME/go/bin
        go install github.com/kyoh86/richgo@latest
        go install github.com/mitchellh/gox@latest

    - run: RICHGO_FORCE_COLOR=1 PATH=$HOME/go/bin/:$PATH make richtest


  test-win:
    name: MINGW64
    defaults:
      run:
        shell: msys2 {0}
    runs-on: windows-latest
    steps:

    - shell: bash
      run: git config --global core.autocrlf input

    - uses: msys2/setup-msys2@v2
      with:
        msystem: MINGW64
        update: true
        install: >
          git
          make
          unzip
          mingw-w64-x86_64-go

    - uses: actions/checkout@v4

    - uses: actions/cache@v4
      with:
        path: ~/go/pkg/mod
        key: ${{ runner.os }}-${{ matrix.go }}-${{ hashFiles('**/go.sum') }}
        restore-keys: ${{ runner.os }}-${{ matrix.go }}-

    - run: |
        export GOBIN=$HOME/go/bin
        go install github.com/kyoh86/richgo@latest
        go install github.com/mitchellh/gox@latest

    - run: RICHGO_FORCE_COLOR=1 PATH=$HOME/go/bin:$PATH make richtest
