Skip to content

Commit

Permalink
Merge pull request #7 from rseng/add/action-label
Browse files Browse the repository at this point in the history
exposing variable as an envar
  • Loading branch information
vsoch authored Mar 8, 2020
2 parents fe637cb + 555553c commit de9f63a
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Critical items to know are:
- changed behaviour (recipe sections work differently)

## [master](https://github.com/rseng/good-first-issues/tree/master)
- add issue label and collection folder parameters, extra tags optional (v1.0.2)
- ensure tags are sorted (v1.0.1)
- first tagged released associated with blog post (v1.0.0)

46 changes: 43 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,62 @@ https://github.com/spack/spack hpc,package-management
https://github.com/singularityhub/sregistry containers,singularity
```

### `label`

**optional** By default, the repository will filter down to issues labeled with "good first issue".
However, you can change this by setting this variable to something else.


### `collection`

**optional** By default, the issues will each produce a markdown file to add to the "docs" GitHub pages folder,
in a subfolder named by this variable, which defaults to _issues. If you produce a site that has more
than one collection, you can change this to something else.


## Example usage

```yaml
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Generate First Issues
uses: rseng/[email protected].1
uses: rseng/[email protected].2
with:
repos-file: '.github/repos.txt'
token: ${{ secrets.GITHUB_TOKEN }}
```
You only need to define repos-file if you change the path (note that the above is changed from .github/repos.txt). It's
highly recommended that you don't use master branch, but instead
a version release or commit (as shown above).
highly recommended that you don't use master branch, but instead a version release or commit (as shown above).
Here is how you might update the label used:
```yaml
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Generate First Issues
uses: rseng/[email protected]
with:
label: 'bug'
token: ${{ secrets.GITHUB_TOKEN }}
```
Finally, if I want to instead output to a folder called `_another` (a Jekyll collection name)
as a relative path to the docs folder, I can set that as follows:


```yaml
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Generate First Issues
uses: rseng/[email protected]
with:
collection: '_another'
token: ${{ secrets.GITHUB_TOKEN }}
```


## Examples

Expand Down
10 changes: 10 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ inputs:
description: 'The relative path in the repository for the repos.txt'
required: true
default: 'repos.txt'
collection:
description: 'The relative path in docs for the collection folder to output to'
required: true
default: '_issues'
label:
description: 'The label to generate an interface for'
required: true
default: 'good first issue'
token:
description: >
Auth token used to fetch the repository.
Expand All @@ -19,3 +27,5 @@ runs:
env:
REPOS_FILE: ${{ inputs.repos-file }}
GITHUB_TOKEN: ${{ inputs.token }}
ISSUE_LABEL: ${{ inputs.label }}
COLLECTION_FOLDER: ${{ inputs.collection }}
8 changes: 7 additions & 1 deletion scripts/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
set -eu
set -o pipefail

# Get the relative path of the folder in docs to write output
if [ -z "${COLLECTION_FOLDER}" ]; then
COLLECTION_FOLDER="_issues"
fi

# If the docs folder isn't created, do so.
if [ ! -d "/github/workspace/docs" ]; then
printf "Creating docs folder for GitHub pages\n"
Expand All @@ -11,7 +16,8 @@ fi

# Cleanup old set of first issues
printf "Cleaning up previous first issues...\n"
rm -rf /github/workspace/docs/_issues
rm -rf "/github/workspace/docs/${COLLECTION_FOLDER}"
export COLLECTION_FOLDER

# Generate first issues
python3 /generate-first-issues.py
21 changes: 17 additions & 4 deletions scripts/generate-first-issues.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

# GitHub Workflow - we get variables from environment
REPOS_FILE = os.environ.get("REPOS_FILE")
ISSUE_LABEL = os.environ.get("ISSUE_LABEL", "good first issue")
COLLECTION_FOLDER = os.environ.get("COLLECTION_FOLDER", "_issues")
if not REPOS_FILE:
sys.exit(f"{REPOS_FILE} must be defined.")

Expand All @@ -26,17 +28,28 @@

# Must authenticate
headers = {"Authorization": f"token {token}"}
data = {"state": "open", "labels": "good first issue"}
data = {"state": "open", "labels": ISSUE_LABEL}

# Documentation base is located at docs
output_dir = "/github/workspace/docs/_issues"
output_dir = "/github/workspace/docs/%s" % COLLECTION_FOLDER

# Print metadata for user
print("Issue label: [%s]" % ISSUE_LABEL)
print("Collection output folder: [%s]" % output_dir)

if not os.path.exists(output_dir):
os.mkdir(output_dir)

# Load repos
for line in lines:
repo, extra_tags = line.strip().split(" ")

# Extra tags are optional, separated by comma
extra_tags = ""
try:
repo, extra_tags = line.strip().split(" ")
except ValueError:
repo = line.strip()

extra_tags = extra_tags.split(",")
repo = "/".join(repo.split("/")[-2:])
url = api_base.format(repo=repo)
Expand All @@ -60,7 +73,7 @@

# Add labels as tags
tags = set([x["name"] for x in issue["labels"]])
tags.remove("good first issue")
tags.remove(ISSUE_LABEL)
tags = list(tags)

if extra_tags:
Expand Down

0 comments on commit de9f63a

Please sign in to comment.