An open API service indexing awesome lists of open source software.

https://github.com/anmol-baranwal/handle-multiple-issues

Track if a contributor creates multiple issues with 10+ options đŸ”Ĩ
https://github.com/anmol-baranwal/handle-multiple-issues

action-workflow author contributor github-actions github-workflow multiple-issues opensource-projects projects-management workflow

Last synced: 2 months ago
JSON representation

Track if a contributor creates multiple issues with 10+ options đŸ”Ĩ

Awesome Lists containing this project

README

        

## Handle Multiple Issues

> â„šī¸ This GitHub workflow is designed for open source projects where users are allowed to work on only one issue at a time.

With this GitHub workflow, you can automate tasks whenever an author creates multiple open issues.

### Use cases

- The workflow can comment the issues that are already created by the author which are currently in the open state.
- You can also filter the issues that are assigned to the author of the issue
- You can add your own comment message (even multiline) in the issue.
- You can add label or labels based on your preferences.
- Optionally, you can also close the issue (previous issues won't be affected), and only the current issue will be closed.
- You can ignore this workflow for specific users by using `ignoreUsers`
- You can directly pass `ignoreCollaborators`

---

### 🚀 Getting Started

- For custom configuration in-depth, you can check [examples](#examples).
- Create a file in the repository at the following path: `.github/workflows/handle-multiple-issues.yml` and paste the following code into it.

```yml
name: Handle Multiple Issues

on:
issues:
types:
- reopened
- opened
jobs:
handle-multiple-issues:
runs-on: ubuntu-latest
steps:
- name: Handle Multiple Issues
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
label: "multiple issues" #default
close: false #default
issueNumber: true #default is true
```

---

### Inputs

Various inputs are defined to let you configure the action:

| Name | Description | Default |
| ---- | ----------- | ------- |
| `gh-token` | The GitHub token for authentication | `'${{ github.token }}'` |
| `label` | Add a label to the current issue. Use commas to separate if there are multiple labels. | `'multiple issues'` |
| `comment` | A message to comment on the issue | `''` |
| `close` | This will close the issue if set to true | `'false'` |
| `issueNumber` | This will comment all the previous issues that are created by the author | `'true'` |
| `assign` | This will filter the issues that are assigned to the author (works only if `issueNumber` is `true`) | `'false'` |
| `ignoreUsers` | Specify usernames that should be ignored while running this workflow. Use commas to separate if there are multiple users. | `''` |
| `ignoreCollaborators` | This will ignore all the collaborators in the repository while running this workflow | `'false'` |


The Combinations that you can use with `comment`, `assign` and `issueNumber`:

> Suppose, a user has created `#1`, `#2` which are currently open, only `#2` is assigned to author and we have now included this workflow. Now suppose he creates the `#3` issue.

> You can see the [examples](#examples) for better clarity.

| issueNumber | comment | assign | Purpose | Message by Bot |
| ----------- | ------- | ------ | ------- | -------------- |
| `true` | | `false` | To mention issue number with the default message | `#2, #1 is already opened by you` |
| `true` | `custom_message` | `false` | To mention issue number with a custom message | `#2, #1 custom_message` |
| `false` | `custom_message` | `false` | Custom message without mentioning issue | `custom_message` |
| `false` | | `false` | Nothing is mentioned; only the label is added as per the workflow | |
| `true` | | `true` | To filter issues that are created by the author and assigned to the same author | `#2 has been opened by you and is also assigned to you.` |

> Only the default message is modified when `assign` is set to `true`; the concept of a custom message remains unchanged.

---

### 🔖 Examples

Add a custom label and print the issue number with a default message

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
label: "up for grabs" #default is 'multiple issues'
close: false #default
issueNumber: true #default is true
```


Add a default label and print the issue number with a custom message

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
# label 'multiple issues' will be added
comment: 'custom message'
issueNumber: true #default is true
```


Print a custom message without mentioning issue number

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
label: "multiple issues" #default
comment: 'custom message'
issueNumber: false #default is true
```


Multiline comment message with issue number

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
label: "multiple issues" #default
comment: |
custom message1
custom message2
issueNumber: true #default is true

# Suppose #1 is already created by the author.
# Output
# #1 custom message1
# custom message2
```


Add multiple labels

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
label: 'label1, label2' # separate using comma
issueNumber: true #default is true
```


To filter issues that are assigned to the author


- The same rules for message applies to this condition
- This will not work unless `issueNumber` is `true`.


```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
issueNumber: true # default is true
assign: true # this will not work, unless 'issueNumber' is true

# Suppose #1, #2 is already created by the author. But only #2 is assigned to the author.
# Output
# #2 has been opened by you and is also assigned to you.
```


To ignore specified users while running this workflow


- Suppose, we have to ignore this workflow for users with username: `Anmol-Baranwal`, `AnmolB2`.

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
issueNumber: true # default is true
ignoreUsers: 'Anmol-Baranwal, AnmolB2'

# Suppose Anmol-Baranwal created an issue. You will receive a log message during the workflow execution.
# Log Message
# User: Anmol-Baranwal is on the ignore list. Ignoring the workflow for this user.
```


To ignore collaborators of the repository while running this workflow


- Suppose, we have to ignore this workflow for users with username: `Anmol-Baranwal`, `AnmolB2`.

```yml
uses: Anmol-Baranwal/handle-multiple-issues@v1
with:
issueNumber: true # default is true
ignoreCollaborators: true

# Suppose Anmol-Baranwal created an issue and is a collaborator. You will receive a log message during the workflow execution.
# Log Message
# User: Anmol-Baranwal is a collaborator. Ignoring the issue for collaborators.
```

---

### 🤝 How to Contribute?

All changes are welcome. Please read our [contributing guidelines](Contributing.md)

Feel free to suggest any features or report bugs using these [issue templates](https://github.com/Anmol-Baranwal/handle-multiple-issues/issues/new/choose).

---

### 📝 License








The scripts and documentation in this project are released under the MIT License.

---

### bullseye Tech & Tools

> In case you want to run the action locally, without having to commit/push every time, you can use the [act](https://github.com/nektos/act) tool.

---

### Author

> Feel free to contact me if you need a custom workflow for your project. I'll be happy to build one.

GitHub Profile of Anmol Baranwal
Anmol Baranwal

@Anmol-Baranwal