From f0dc732331d5f848fc0423361355884a21ab9f98 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Wed, 1 Apr 2020 22:48:52 -0400 Subject: [PATCH] Update README with usage details --- README.md | 134 ++++++++++++++++++++++++++++++++++++++++ docs/samples/full.yml | 4 +- docs/samples/simple.yml | 2 +- labeler.go | 2 +- 4 files changed, 138 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4053e79..9047b7c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,140 @@ A labeler for GitHub issues and pull requests. +```bash +Usage: + labeler [OPTIONS] + +Application Options: + -o, --owner= GitHub Owner/Org name [$GITHUB_ACTOR] + -r, --repo= GitHub Repo name [$GITHUB_REPO] + -t, --type= The target event type to label (issues or pull_request) [$GITHUB_EVENT_NAME] + --id= The integer id of the issue or pull request + --data= A JSON string of the 'event' type (issue event or pull request event)' + -v, --version Display version information + +Help Options: + -h, --help Show this help message +``` + +Example usage: +```bash +export GITHUB_TOKEN=yourtoken +./labeler -o jimschubert -r labeler -type pull_request -id 1 +``` + +This will evaluate the configuration file for the repository and apply any relevant labels to PR #1. + +## Configuration + +The configuration file must be located in the target repository at `.github/labeler.yml`, and the contents must follow either the *simple* schema or the *full* schema. + +Feel free to use one of the following schema examples to get started. + +### Simple Schema + +```yaml +# labeler "simple" schema +# Comment is applied to both issues and pull requests. +# If you need a more robust solution, consider the "full" schema. +comment: | + 👍 Thanks for this! + 🏷 I have applied any labels matching special text in your issue. + + Please review the labels and make any necessary changes. + +# Labels is an object where: +# - keys are labels +# - values are array of string patterns to match against title + body in issues/prs +labels: + 'bug': + - '\bbug[s]?\b' + 'help wanted': + - '\bhelp( wanted)?\b' + 'duplicate': + - '\bduplicate\b' + - '\bdupe\b' + 'enhancement': + - '\benhancement\b' + 'question': + - '\bquestion\b' +``` + +### Full Schema + +```yaml +# labeler "full" schema + +# enable labeler on issues, prs, or both. +enable: + issues: true + prs: true +# comments object allows you to specify a different message for issues and prs + +comments: + issues: | + Thanks for opening this issue! + I have applied any labels matching special text in your title and description. + + Please review the labels and make any necessary changes. + prs: | + Thanks for the contribution! + I have applied any labels matching special text in your title and description. + + Please review the labels and make any necessary changes. + +# Labels is an object where: +# - keys are labels +# - values are objects of { include: [ pattern ], exclude: [ pattern ] } +# - pattern must be a valid regex, and is applied globally to +# title + description of issues and/or prs (see enabled config above) +# - 'include' patterns will associate a label if any of these patterns match +# - 'exclude' patterns will ignore this label if any of these patterns match +labels: + 'bug': + include: + - '\bbug[s]?\b' + exclude: [] + 'help wanted': + include: + - '\bhelp( me)?\b' + exclude: + - '\b\[test(ing)?\]\b' + 'enhancement': + include: + - '\bfeat\b' + exclude: [] + +``` + +## Build + +Build a local distribution for evaluation using goreleaser. + +```bash +goreleaser release --skip-publish --snapshot --rm-dist +``` + +This will create an executable application for your os/architecture under `dist`: + +``` +dist +├── labeler_darwin_amd64 +│   └── labeler +├── labeler_linux_386 +│   └── labeler +├── labeler_linux_amd64 +│   └── labeler +├── labeler_linux_arm64 +│   └── labeler +├── labeler_linux_arm_6 +│   └── labeler +└── labeler_windows_amd64 + └── labeler.exe +``` + ## License The labeler project is licensed under Apache 2.0 + +*labeler* is a rewrite of an earlier GitHub App I wrote (see [auto-labeler](https://github.com/jimschubert/auto-labeler)). I've rewritten that app to replace the license while making the tool reusable across CI tools and operating systems. diff --git a/docs/samples/full.yml b/docs/samples/full.yml index f6180a8..02ddddc 100644 --- a/docs/samples/full.yml +++ b/docs/samples/full.yml @@ -1,6 +1,6 @@ -# auto-labeler "full" schema +# labeler "full" schema -# enable auto-labeler on issues, prs, or both. +# enable labeler on issues, prs, or both. enable: issues: true prs: true diff --git a/docs/samples/simple.yml b/docs/samples/simple.yml index d327f89..4c32ba9 100644 --- a/docs/samples/simple.yml +++ b/docs/samples/simple.yml @@ -1,4 +1,4 @@ -# auto-labeler "simple" schema +# labeler "simple" schema # Comment is applied to both issues and pull requests. # If you need a more robust solution, consider the "full" schema. comment: | diff --git a/labeler.go b/labeler.go index fdca7a6..c915c1b 100644 --- a/labeler.go +++ b/labeler.go @@ -205,7 +205,7 @@ func (l *Labeler) addComment(comment *string) error { } func newComment(comment string) *string { - fullComment := fmt.Sprintf("\n%s", comment) + fullComment := fmt.Sprintf("\n%s", comment) return &fullComment }