name: Lint Check

on:
  push:
    branches:
      - main
      - release/**
  pull_request:
    branches:
      - main
      - release/**
permissions: read-all
jobs:
  gofmt:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v3
      - name: Setup Go Environment
        uses: actions/setup-go@v3
        with:
          go-version: '1.20.3'
      - name: Run gofmt Check
        working-directory: ./
        run: |
          diffs=`gofmt -l .`
          if [[ -n $diffs ]]; then
              echo "Files are not formatted by gofmt:"
              echo $diffs
              exit 1
          fi
  golint:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v3
      - name: Setup Go Environment
        uses: actions/setup-go@v3
        with:
          go-version: '1.20.3'
      - name: Install jq
        run: sudo apt install -y jq
      - uses: actions/setup-node@v3
        with:
          node-version: '16'
      - name: Download golangci-lint
        run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.2
      - name: Run Golang Linters
        working-directory: ./
        run: |
          PATH=${PATH}:$(go env GOPATH)/bin make lint
