Skip to content

Commit

Permalink
option to create issue with label (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
rrrkren authored Jul 5, 2023
1 parent dd1555b commit 8600531
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 5 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
IMAGE_REPO=ghcr.io/trstringer/manual-approval
IMAGE_REPO=us-west1-docker.pkg.dev/dl-dapper/dev/github/manual-approval

.PHONY: build
build:
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ steps:
exclude-workflow-initiator-as-approver: false
additional-approved-words: ''
additional-denied-words: ''
labels: ''
```
- `approvers` is a comma-delimited list of all required approvers. An approver can either be a user or an org team. (*Note: Required approvers must have the ability to be set as approvers in the repository. If you add an approver that doesn't have this permission then you would receive an HTTP/402 Validation Failed error when running this action*)
Expand Down
5 changes: 4 additions & 1 deletion action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ inputs:
additional-denied-words:
description: Comma separated list of words that can be used to deny beyond the defaults.
default: ''
labels:
description: Comma separated issue labels
required: false
runs:
using: docker
image: docker://ghcr.io/trstringer/manual-approval:1.9.0
image: docker://us-west1-docker.pkg.dev/dl-dapper/dev/github/manual-approval:1.10.0
16 changes: 14 additions & 2 deletions approval.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,18 @@ type approvalEnvironment struct {
issueBody string
issueApprovers []string
minimumApprovals int
labels []string
}

func newApprovalEnvironment(client *github.Client, repoFullName, repoOwner string, runID int, approvers []string, minimumApprovals int, issueTitle, issueBody string) (*approvalEnvironment, error) {
func newApprovalEnvironment(
client *github.Client,
repoFullName, repoOwner string,
runID int,
approvers []string,
minimumApprovals int,
issueTitle, issueBody string,
labels []string,
) (*approvalEnvironment, error) {
repoOwnerAndName := strings.Split(repoFullName, "/")
if len(repoOwnerAndName) != 2 {
return nil, fmt.Errorf("repo owner and name in unexpected format: %s", repoFullName)
Expand All @@ -40,6 +49,7 @@ func newApprovalEnvironment(client *github.Client, repoFullName, repoOwner strin
minimumApprovals: minimumApprovals,
issueTitle: issueTitle,
issueBody: issueBody,
labels: labels,
}, nil
}

Expand Down Expand Up @@ -72,17 +82,19 @@ Respond %s to continue workflow or %s to cancel.`,

var err error
fmt.Printf(
"Creating issue in repo %s/%s with the following content:\nTitle: %s\nApprovers: %s\nBody:\n%s\n",
"Creating issue in repo %s/%s with the following content:\nTitle: %s\nApprovers: %s\nLabels: %s\nBody:\n%s\n",
a.repoOwner,
a.repo,
issueTitle,
a.issueApprovers,
a.labels,
issueBody,
)
a.approvalIssue, _, err = a.client.Issues.Create(ctx, a.repoOwner, a.repo, &github.IssueRequest{
Title: &issueTitle,
Body: &issueBody,
Assignees: &a.issueApprovers,
Labels: &a.labels,
})
if err != nil {
return err
Expand Down
1 change: 1 addition & 0 deletions constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const (
envVarExcludeWorkflowInitiatorAsApprover string = "INPUT_EXCLUDE-WORKFLOW-INITIATOR-AS-APPROVER"
envVarAdditionalApprovedWords string = "INPUT_ADDITIONAL-APPROVED-WORDS"
envVarAdditionalDeniedWords string = "INPUT_ADDITIONAL-DENIED-WORDS"
envVarIssueLabels string = "INPUT_LABELS"
)

var (
Expand Down
14 changes: 13 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"os"
"os/signal"
"strconv"
"strings"
"time"

"github.com/google/go-github/v43/github"
Expand Down Expand Up @@ -181,7 +182,18 @@ func main() {
os.Exit(1)
}
}
apprv, err := newApprovalEnvironment(client, repoFullName, repoOwner, runID, approvers, minimumApprovals, issueTitle, issueBody)
issueLabels := strings.Split(os.Getenv(envVarIssueLabels), ",")
apprv, err := newApprovalEnvironment(
client,
repoFullName,
repoOwner,
runID,
approvers,
minimumApprovals,
issueTitle,
issueBody,
issueLabels,
)
if err != nil {
fmt.Printf("error creating approval environment: %v\n", err)
os.Exit(1)
Expand Down

0 comments on commit 8600531

Please sign in to comment.