name: Mark stale issues

on:
  schedule:
    - cron: '0 8 * * *'
  workflow_dispatch:
  issue_comment:

env:
  stale_label: stale

jobs:
  stale_action:
    if: github.event_name != 'issue_comment'
    runs-on: ubuntu-latest
    permissions:
      issues: write

    steps:
      - uses: actions/stale@v8.0.0
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          days-before-stale: 30
          days-before-close: 5
          stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Please comment or update this issue or it will be closed in 5 days.'
          stale-issue-label: $stale_label
          exempt-issue-labels: 'Internal, Fixed in next release, Bug: Confirmed, Documentation Needed'
          exempt-all-issue-assignees: true
          operations-per-run: 300
          close-issue-reason: 'not_planned'

  remove_stale: # trigger "stale" removal immediately when stale issues are commented on
    if: github.event_name == 'issue_comment'
    permissions:
      contents: read #  for actions/checkout
      issues: write #  to edit issues label
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3.5.3
      - name: Remove 'stale' label
        run: gh issue edit ${{ github.event.issue.number }} --remove-label $stale_label
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}