@operate-first/probot-issue-form v1.0.2
Probot issue form parser
This extension provides a ready to use parser for issues created via issue forms.
Installation
npm install --save @operate-first/probot-issue-formOverview
Library exposes a single fuction parse. It accepts probot context for issue.created or issue.modified events and returns a promise which resolves to a record mapping.
Usage
const issueForm = require('@operate-first/probot-issue-form');
module.exports = app => {
app.on('issues.created', async(context) => {
try {
const data = await issueForm.parse(context);
} catch {
app.log.info('Issue was not created using Issue form template (the YAML ones)')
}
});
}Supported fields
See upstream documentation for API specification, schema and details.
Input
Textual response field which allows a single line response only.
Example with ID
Issue template:
...
body:
- type: input
id: thisIsInput
attributes:
label: This is input fieldIssue body:
### This is input field
some valueResult:
{thisIsInput: "some value"}Example without ID
Issue template:
...
body:
- type: input
attributes:
label: This is input fieldIssue body:
### This is input field
some valueResult:
{this-is-input-field: "some value"}This translation of labels to IDs is available for all the other input field types as well.
No response example
Issue template:
...
body:
- type: input
attributes:
label: This is input fieldIssue body:
### This is input field
_No response_Result:
{this-is-input-field: ""}Checkboxes
Checkboxes are parsed into an array of selected options.
Example
Issue template:
...
body:
- type: checkboxes
id: thisIsCheckbox
attributes:
label: Use these checkboxes
options:
- label: First item
- label: Second item
- label: Third itemIssue body:
### Use these checkboxes
- [ ] First item
- [X] Second item
- [X] Third itemResult:
{thisIsCheckbox: ["Second item", "Third item"]}No response example
Issue template:
...
body:
- type: checkboxes
id: thisIsCheckbox
attributes:
label: Use these checkboxes
options:
- label: First item
- label: Second item
- label: Third itemIssue body:
### Use these checkboxes
- [ ] First item
- [ ] Second item
- [ ] Third itemResult:
{thisIsCheckbox: []}Dropdown
Since dropdowns allows user to select multiple options (when flag mutliple is truthy), they are parsed into array of selected options, similarly to checkboxes.
Example
Issue template:
...
body:
- type: dropdown
id: thisIsDropdown
attributes:
label: Use this dropdown
options:
- First item
- Second item
- Third itemIssue body:
### Use this dropdown
First itemResult:
{thisIsDropdown: ["First item"]}Example with multiple options allowed
Issue template:
...
body:
- type: dropdown
id: thisIsDropdown
attributes:
label: Use this dropdown
multiple: true
options:
- First item
- Second item
- Third itemIssue body:
### Use this dropdown
First item, Second itemResult:
{thisIsDropdown: ["First item", "Second item"]}No response example
Issue template:
...
body:
- type: dropdown
id: thisIsDropdown
attributes:
label: Use this dropdown
options:
- First item
- Second item
- Third itemIssue body:
### Use this dropdown
_No response_Result:
{thisIsDropdown: []}Textarea
Type supports multiline text responses which can contain markdown formatting. There's also an optional flag render, which wraps the response into a codeblock (```), this extension removes this wrapping and returns the content only.
Example
Issue template:
...
body:
- type: textarea
id: thisIsTextarea
attributes:
label: Use this textareaIssue body:
### Use this textarea
value
can
be
multilineResult:
{thisIsTextarea: "value
can
be
multiline"}Example with render
Issue template:
...
body:
- type: textarea
id: thisIsTextarea
attributes:
label: Use this textarea
render: trueIssue body:
### Use this textarea
```true
text
```Result:
{thisIsTextarea: "text"}No response example
Issue template:
...
body:
- type: textarea
id: thisIsTextarea
attributes:
label: Use this textareaIssue body:
### Use this textarea
_No response_Result:
{thisIsTextarea: ""}Markdown
Markdown field is not propagated to issue body, hence we ignore it.