# Copyright © 2023 OpenIM. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Github Pull Request
on:
  push:
    branches: [main]
    paths-ignore:
      - 'README.md'
      - 'CONTRIBUTING.md'
      - 'docs/**'
  workflow_dispatch:
  schedule:
    - cron: '0 2 * * *'

permissions:
  contents: write
  pull-requests: write

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Get League branch Patch
        run: |
          git config user.name 'openimbot'
          git config user.email 'openimsdk@qq.com'
          git checkout -b cicd/patch-${{ github.event.number }}
      - uses: actions/setup-node@v3
      - name: Setup Go
        uses: actions/setup-go@v4
      - name: Run go modules tidy
        run: |
          sudo make tidy
          sudo make tools.verify.go-gitlint
          echo "Run go modules tidy successfully" 

      - name: Run go format
        run: |
          sudo make format
          echo "Run go format successfully" 
        continue-on-error: true

      - name: Run go lint
        run: |
          sudo make lint
          echo "Run go lint successfully" 
        continue-on-error: true

      - name: Generate all necessary files, such as error code files
        run: |
          make generate
          echo "Generate all necessary files successfully" 
        continue-on-error: true

      - name: Run unit test and get test coverage
        run: |
          make cover
          echo "Run unit test and get test coverage successfully" 
        continue-on-error: true

    #   - name: Initialize CodeQL
    #     uses: github/codeql-action/init@v2
    #     with:
    #       languages: go

    #   - name: Perform CodeQL Analysis
        # uses: github/codeql-action/analyze@v2

      - name: OpenIM verify copyright
        run: |
          sudo make verify-copyright
          sudo make add-copyright
          echo "OpenIM verify successfully" 
        continue-on-error: true
      
    #   - name: Commit code
    #     run: |
    #         git add .
    #         git commit -m "cicd: bump League Patch to cicd/patch-${{ github.event.number }}"
    
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ secrets.BOT_GITHUB_TOKEN }}
          commit-message: "cicd: bump League Patch to cicd/patch-${{ github.event.number }}"
          title: Bump League Patch to cicd/patch-${{ github.event.number }}
          author: kubbot <kubbot@3293172751ysy@gmail.com>
          signoff: false
          draft: false
          branch: "cicd/patch-${{ github.event.number }}"
          assignees: cubxxw
          reviewers: cubxxw
          delete-branch: true
          body: |
            Review criteria:

            - [ ] Disenchanter can connect and issue actions
            
            This is an automated PR. @ ${{ github.actor }}
            <sub>[workflow](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/.github/workflows/pull-request.yml).</sub>
          base: main
          labels: |
            kind/documentation
            enhancement
            report