name: Create a pipeline and run nf-core linting
on:
  push:
    branches:
      - dev
      # https://docs.renovatebot.com/key-concepts/automerge/#branch-vs-pr-automerging
      - "renovate/**" # branches Renovate creates
    paths-ignore:
      - "docs/**"
      - "CHANGELOG.md"
  pull_request:
    paths-ignore:
      - "docs/**"
      - "CHANGELOG.md"
  release:
    types: [published]
  workflow_dispatch:

# Cancel if a newer run is started
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  MakeTestWorkflow:
    runs-on:
      - runs-on=${{ github.run_id }}-make-test-worfklow
      - runner=4cpu-linux-x64
    env:
      NXF_ANSI_LOG: false

    strategy:
      matrix:
        NXF_VER:
          - "24.04.2"
          - "latest-everything"
    steps:
      - name: go to subdirectory and change nextflow workdir
        run: |
          mkdir -p create-lint-wf
          cd create-lint-wf
          export NXF_WORK=$(pwd)

      # Get the repo code
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
        name: Check out source-code repository

      # Set up nf-core/tools
      - name: Set up Python 3.12
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
        with:
          python-version: "3.13"
          cache: pip

      - name: Install python dependencies
        run: |
          python -m pip install --upgrade pip
          pip install .

      - name: run create-lint-wf
        uses: ./.github/actions/create-lint-wf
        with:
          NXF_VER: ${{ matrix.NXF_VER }}

      # Build a module from the template
      - name: nf-core modules create
        run: nf-core --verbose --log-file log.txt modules create bpipe --dir nf-core-testpipeline --author @nf-core-bot --label process_low --meta
        working-directory: create-lint-wf

      # Remove TODO statements
      - name: remove TODO
        run: find nf-core-testpipeline -type f -exec sed -i '/TODO nf-core:/d' {} \;
        working-directory: create-lint-wf

      # Uncomment includeConfig statement
      - name: uncomment include config
        run: find nf-core-testpipeline -type f -exec sed -i 's/\/\/ includeConfig/includeConfig/' {} \;
        working-directory: create-lint-wf

      # Run the other nf-core commands
      - name: nf-core pipelines list
        run: nf-core --log-file log.txt pipelines list
        working-directory: create-lint-wf

      - name: nf-core pipelines schema
        run: nf-core --log-file log.txt pipelines schema build --dir nf-core-testpipeline/ --no-prompts
        working-directory: create-lint-wf

      - name: Cleanup work directory
        run: sudo rm -rf create-lint-wf
        if: always()
