name: Close stale feature requests
on:
  workflow_dispatch:
  schedule:
    # Run every day at 1:00 AM UTC.
    - cron: 0 1 * * *

# yamllint disable rule:empty-lines
env:
  CLOSE_MESSAGE: >
    There has been no activity on this feature request
    and it is being closed. If you feel closing this issue is not the
    right thing to do, please leave a comment.


    For more information on how the project manages
    feature requests, please consult the
    [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md).

  WARN_MESSAGE: >
    There has been no activity on this feature request for
    5 months. To help maintain relevant open issues, please
    add the https://github.com/nodejs/node/labels/never-stale
    label or close this issue if it should be closed. If not,
    the issue will be automatically closed 6 months after the
    last non-automated comment.

    For more information on how the project manages
    feature requests, please consult the
    [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md).
# yamllint enable

permissions:
  contents: read

jobs:
  stale:
    permissions:
      issues: write  # for actions/stale to close stale issues
      pull-requests: write  # for actions/stale to close stale PRs
    if: github.repository == 'nodejs/node'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e  # v9.0.0
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          days-before-stale: 180
          days-before-close: 30
          stale-issue-label: stale
          close-issue-message: ${{ env.CLOSE_MESSAGE }}
          stale-issue-message: ${{ env.WARN_MESSAGE }}
          only-labels: feature request
          exempt-issue-labels: never-stale
          # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits
          operations-per-run: 500
          remove-stale-when-updated: true