name: NoneFlow

on:
  issues:
    types: [opened, reopened, edited]
  issue_comment:
    types: [created]
  pull_request_target:
    types: [closed]
  pull_request_review:
    types: [submitted]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.issue.number && format('publish/issue{0}', github.event.issue.number) || github.head_ref || github.run_id }}
  cancel-in-progress: ${{ startsWith(github.head_ref, 'publish/issue')}}

jobs:
  noneflow:
    runs-on: ubuntu-latest
    name: noneflow
    # do not run on forked PRs, do not run on not related issues, do not run on pr comments
    if: |
      !(
        (
          github.event.pull_request &&
          (
            github.event.pull_request.head.repo.fork ||
            !(
              contains(github.event.pull_request.labels.*.name, 'Plugin') ||
              contains(github.event.pull_request.labels.*.name, 'Adapter') ||
              contains(github.event.pull_request.labels.*.name, 'Bot')
            )
          )
        ) ||
        (
          github.event_name == 'issue_comment' && github.event.issue.pull_request
        )
      )
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_KEY }}

      - name: Checkout Code
        uses: actions/checkout@v6
        with:
          token: ${{ steps.generate-token.outputs.token }}

      - name: NoneFlow
        uses: docker://ghcr.io/nonebot/noneflow:latest
        with:
          config: >
            {
              "base": "master",
              "plugin_path": "assets/plugins.json5",
              "bot_path": "assets/bots.json5",
              "adapter_path": "assets/adapters.json5",
              "registry_repository": "nonebot/registry",
              "artifact_path": "artifact"
            }
        env:
          APP_ID: ${{ secrets.APP_ID }}
          PRIVATE_KEY: ${{ secrets.APP_KEY }}

      - name: Upload Artifact
        uses: actions/upload-artifact@v6
        with:
          name: noneflow
          path: artifact/*
          if-no-files-found: ignore
