manual-approval/constants.go
Liz MacLean aba06e32f1
Introduce a 'fail-on-denial' boolean (#147)
* Introduce a 'fail-on-approval' boolean

* Use test docker image

* oops

* change default and fix logic

* Update action.yaml

* Fix linting error
2025-02-14 20:23:48 -05:00

47 lines
1.8 KiB
Go

package main
import (
"os"
"strings"
"time"
)
const (
pollingInterval time.Duration = 10 * time.Second
envVarRepoFullName string = "GITHUB_REPOSITORY"
envVarRunID string = "GITHUB_RUN_ID"
envVarRepoOwner string = "GITHUB_REPOSITORY_OWNER"
envVarWorkflowInitiator string = "GITHUB_ACTOR"
envVarToken string = "INPUT_SECRET"
envVarApprovers string = "INPUT_APPROVERS"
envVarMinimumApprovals string = "INPUT_MINIMUM-APPROVALS"
envVarIssueTitle string = "INPUT_ISSUE-TITLE"
envVarIssueBody string = "INPUT_ISSUE-BODY"
envVarExcludeWorkflowInitiatorAsApprover string = "INPUT_EXCLUDE-WORKFLOW-INITIATOR-AS-APPROVER"
envVarAdditionalApprovedWords string = "INPUT_ADDITIONAL-APPROVED-WORDS"
envVarAdditionalDeniedWords string = "INPUT_ADDITIONAL-DENIED-WORDS"
envVarFailOnDenial string = "INPUT_FAIL-ON-DENIAL"
)
var (
additionalApprovedWords = readAdditionalWords(envVarAdditionalApprovedWords)
additionalDeniedWords = readAdditionalWords(envVarAdditionalDeniedWords)
approvedWords = append([]string{"approved", "approve", "lgtm", "yes"}, additionalApprovedWords...)
deniedWords = append([]string{"denied", "deny", "no"}, additionalDeniedWords...)
)
func readAdditionalWords(envVar string) []string {
rawValue := strings.TrimSpace(os.Getenv(envVar))
if len(rawValue) == 0 {
// Nothing else to do here.
return []string{}
}
slicedWords := strings.Split(rawValue, ",")
for i := range slicedWords {
// no leading or trailing spaces in user provided words.
slicedWords[i] = strings.TrimSpace(slicedWords[i])
}
return slicedWords
}