# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
#
# You can adjust the behavior by modifying this file.
# For more information, see:
# https://github.com/actions/stale
name: Mark stale issues and pull requests

on:
  workflow_dispatch:
  schedule:
  - cron: '0 1 * * *'

jobs:
  stale:
    permissions:
      issues: write
      pull-requests: write
    name: Track and close stale issues/PRs
    runs-on: ubuntu-latest

    steps:
    - name: Track and close stale issues/PRs
      uses: actions/stale@v5
      with:
        repo-token: ${{ secrets.GITHUB_TOKEN }}
        days-before-issue-stale: 913
        days-before-pr-stale: 913
        days-before-issue-close: 14
        days-before-pr-close: 14
        stale-issue-message: >
          Thank you for contributing to the Bazel repository!
          This issue has been marked as stale since it has not had any activity in the last 2.5 years. It will be closed in the next 14
          days unless any other activity occurs or one of the following labels is added: "not stale", "awaiting-bazeler". Please reach out
          to the triage team (`@bazelbuild/triage`) if you think this issue is still relevant or you are interested in getting the
          issue resolved.
        close-issue-message: >
          This issue has been automatically closed due to inactivity. If you're still interested in pursuing this, please reach out
          to the triage team (`@bazelbuild/triage`). Thanks!
        stale-pr-message: >
          Thank you for contributing to the Bazel repository!
          This pull request has been marked as stale since it has not had any activity in the last 2.5 years. It will be closed in the next
          14 days unless any other activity occurs or one of the following labels is added: "not stale", "awaiting-review", "awaiting-PR-merge".
          Please reach out to the triage team (`@bazelbuild/triage`) if you think this PR is still relevant or you are interested in getting the
          PR merged.
        close-pr-message: >
          This pull request has been automatically closed due to inactivity. If you're still interested in pursuing this, please reach out
          to the triage team (`@bazelbuild/triage`). Thanks!
        stale-issue-label: 'stale'
        exempt-issue-labels: 'not stale,awaiting-bazeler,untriaged,P0,P1'
        close-issue-reason: "not_planned"
        stale-pr-label: 'stale'
        exempt-pr-labels: 'not stale,awaiting-review,awaiting-PR-merge,P0,P1'
        exempt-draft-pr: true
        operations-per-run: 500
        ascending: true
