Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/actionsdesk/parse-issue


https://github.com/actionsdesk/parse-issue

Last synced: about 6 hours ago
JSON representation

Awesome Lists containing this project

README

        

# Actions Issue Parser

Extract useful information from new issues for use in your GitHub Actions.

## Getting Started

Simply add this action to any workflow that runs on GitHub Issue `created` events and it will extract `key: value` pairs as `outputs` to be used in subsequent actions.

This parser will replace whitespace and special characters with `_`, then squash repeating `_` down to one, dropping any leading or trailing `_`

`Email of User` would become `email_of_user`

#### Example Workflow
```Yaml
- id: parser
uses: actionsdesk/parse-issue@v1
- uses: actions/some-action@v1
with:
foo: ${{steps.parser.outputs.foo}}
bar: ${{steps.parser.outputs.bar}}
```

#### Example Issue

```Yaml
# Welcome

foo: fizz
bar: buzz
```

Given the workflow and issue above, this action will parse `foo` and `bar` with their values and make them available at `steps.parser.outputs`. In this example, the following would be defined:

- `steps.parser.outputs.foo` (with a value of `fizz`)
- `steps.parser.outputs.bar` (with a value of `buzz`)

The `id` used is arbitrary, only used to reference the output in another step.

### Default Extractor

By default, this Action will extract all `key: value` pairs that it finds. Duplicate keys will be overridden by the last value found.

### Custom Extractors

You can define custom extractors with regular expressions by defining inputs to this action in a specific prefix. All inputs that start with `extract_` will be enumerated and made available on `outputs` based on the value passed in. If you use a capture group, we will assign the first match and ignore the rest

#### Examples



Workflow
Issue
Result




uses: actionsdesk/parse-issue@v1

inputs:
extract_username: '<p id="username">(?<username>[^<]+)</p>'
extract_email: '<p id="email">[email protected]</p>'

# Example Issue

<p id="username">johnsmith</p>
<p id="username">(?<email>[^<]+)</p>

username: johnsmith

email: [email protected]



uses: actionsdesk/parse-issue@v1

inputs:
extract_awesome: '^(.+) is awesome!$'

# Example Issue

Everything is awesome!

awesome: Everything