Deal with your client's feedback efficiently by creating a bunch of issues in bulk from a text file.
Project description
issurge
Deal with your client's feedback efficiently by creating a bunch of issues in bulk from a text file.
Supported platforms
- Gitlab (including custom instances): requires
glabto be installed - Github: requires
ghto be installed
Installation
With Pip(x)
Issurge is distributed on PyPI, so you can install it with pipx (recommended) or pip.
pipx install issurge
[!TIP] You can also use uv's
toolsubcommand, it's just likepipxbut wayyy faster.uv tool install issurge
Arch Linux
Issurge is on the AUR, so you can install it with your favorite AUR helper, such as paru:
paru -S issurge
Usage
The command needs to be run inside of the git repository (this is used to detect if the repository uses github or gitlab)
issurge [options] <file> [--] [<submitter-args>...]
issurge --help
- <submitter-args> contains arguments that will be passed as-is to every
glab(orgh) command.
Options
- --dry-run: Don't actually post the issues
- --debug: Print debug information
Syntax
Indentation is done with tab characters only.
-
Title: The title is made up of any word in the line that does not start with
~,@,%,^or#.. Words that start with any of these symbols will not be added to the title, except if they are in the middle (in that case, they both get added as tags/assignees/milestones and as a word in the title, without the prefix symbol) -
Tags: Prefix a word with
~to add a label to the issue. For github repositories under an organization, if the label case-insensitively matches a defined issue type, the label will not be added, but the issue type will be set. Setting multiple issue types results in an error. -
Assignees: Prefix with
@to add an assignee. The special assignee@meis supported. -
Milestone: Prefix with
%to set the milestone -
References: Prefix with
#.NUMBERto define a reference for this issue. See Cross-reference other issues for more information. -
Parent: Prefix with
^to set the parent of the issue we're creating to another issue. Use^NUMBERto set the parent to an already existing issue, or^.REFERENCEto set the parent thru a reference. -
Blocked-by: You can mark other issue(s) as blocking the issue you're creating by using
>NUMBERor>.REFERENCEsyntax (use.REFERENCEto set the dependency thru a reference). This works in the description as well, and (in the description only) the>will be replaced with a#, so that the issue gets linked to the blocking issue. -
Comments: You can add comments by prefixing a line with
// -
Description: To add a description, finish the line with
:, and put the description on another line (or multiple), just below, indented once more than the issue's line. Exemple:My superb issue ~some-tag: Here is a description I can skip lines Another issueNote that you cannot have indented lines inside of the description (they will be ignored).
Add some properties to multiple issues
You can apply something (a tag, a milestone, an assignee) to multiple issues by indenting them below:
One issue
~common-tag
~tag1 This issue will have tags:
- tag1
- common-tag
@me this issue will only have common-tag as a tag.
Another issue.
Cross-reference other issues
As you might know, you can link an issue to another by using #NUMBER, with NUMBER the number of the issue you want to reference. You could want to write that, to reference First issue in Second issue:
First issue
Second issue:
Needs #11
However, this assumes that the current latest issue, before running issurge on this file, is #9. It also assumes that issues get created in order (which is the case for now), and that no other issue will get created while running issurge.
As managing all of this by hand can be annoying, you can create references in the issurge file:
#.1 First issue
Second issue:
Needs #.1
And that #.1 in Needs #.1 will be replaced by the actual issue number of First issue when the issue gets created.
You can also use references to set the parent of an issue or a blocking dependency:
#.1 First issue
^.1 Sub-issue of the first issue
This one is not a sub-issue but:
It will not work without it (see >.1)
[!WARNING] For now, issues are created in order, so you need to define a reference before you can use it.
One-shot mode
You can also create a single issue directly from the command line with issurge new.
If you end the line with :, issurge will prompt you for more lines.
$ issurge --debug new ~enhancement add an interactive \"one-shot\" mode @me:
Please enter a description for the issue (submit 2 empty lines to finish):
> Basically allow users to enter an issue fragment directly on the command line with a subcommand, and if it expects a description, prompt for it
>
>
Submitting add an interactive "one-shot" (...) ~enhancement @me [...]
Running gh issue new -t "add an interactive \"one-shot\" mode" -b "Basically allow users to enter an issue fragment directly on the command line with a subcommand, and if it expects a description, prompt for it" -a @me -l enhancement
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file issurge-1.4.0.tar.gz.
File metadata
- Download URL: issurge-1.4.0.tar.gz
- Upload date:
- Size: 1.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ac1668c1556b0a3d1a9609c2809062693687cadf252a976b00158b29091f3c9
|
|
| MD5 |
8889ca239f667d89b6ce6298e17190aa
|
|
| BLAKE2b-256 |
97c16694946b64e28fe279378c57c3eec47c52b7f9561cf26c72b95fb0ef66f8
|
File details
Details for the file issurge-1.4.0-py3-none-any.whl.
File metadata
- Download URL: issurge-1.4.0-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3c6316d4063230251fecc710c7dba02a812bd984215ee0a8db23155ebc85c1a
|
|
| MD5 |
6b112b1c74d635a79ca83b1a3d1d14a4
|
|
| BLAKE2b-256 |
095413399b1c54f165da5414e9fb7018aaf915c00c10ab0fdc18e03d507c668e
|