diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..dbf7a4c --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,33 @@ +name: lint + +on: + pull_request: + branches_ignore: [] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + go: ['1.20'] + + name: Documentation and Linting + steps: + + - uses: actions/checkout@v2 + with: + path: go/src/github.com/vbatts/git-validation + + # commit for v1 release + - uses: actions/setup-go@0caeaed6fd66a828038c2da3c0f662a42862658f + with: + go-version: ${{ matrix.go }} + + - name: lint + env: + GOPATH: /home/runner/work/git-validation/git-validation/go + run: | + set -x + export PATH=$GOPATH/bin:$PATH + cd go/src/github.com/vbatts/git-validation + go run mage.go -v lint diff --git a/README.md b/README.md index 9d37d6f..3dbb3b3 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ using the `GIT_CHECK_EXCLUDE` environment variable. Multiple paths should be sep When making a change, verify it with: ```shell -go run mage.go vet build test +go run mage.go lint vet build test ``` ## Rules diff --git a/main.go b/main.go index 2109915..2f83349 100644 --- a/main.go +++ b/main.go @@ -27,6 +27,10 @@ var ( flTravisPROnly = flag.Bool("travis-pr-only", true, "when on travis, only run validations if the CI-Build is checking pull-request build") ) +func init() { + logrus.SetOutput(os.Stderr) +} + func main() { flag.Parse() diff --git a/validate/rules.go b/validate/rules.go index 38126a4..0b831a9 100644 --- a/validate/rules.go +++ b/validate/rules.go @@ -75,7 +75,6 @@ func SanitizeFilters(filtStr string) (filters []string) { // // Some `includes` rules have values assigned to them. // i.e. -run "dco,message_regexp='^JIRA-[0-9]+ [A-Z].*$'" -// func FilterRules(rules []Rule, includes []string) []Rule { ret := []Rule{} @@ -83,7 +82,7 @@ func FilterRules(rules []Rule, includes []string) []Rule { for i := range includes { if strings.Contains(includes[i], "=") { chunks := strings.SplitN(includes[i], "=", 2) - if strings.ToLower(r.Name) == strings.ToLower(chunks[0]) { + if strings.EqualFold(r.Name, chunks[0]) { // for these rules, the Name won't be unique per se. There may be // multiple "regexp=" with different values. We'll need to set the // .Value = chunk[1] and ensure r is dup'ed so they don't clobber @@ -93,7 +92,7 @@ func FilterRules(rules []Rule, includes []string) []Rule { ret = append(ret, newR) } } else { - if strings.ToLower(r.Name) == strings.ToLower(includes[i]) { + if strings.EqualFold(r.Name, includes[i]) { ret = append(ret, r) } } diff --git a/validate/runner.go b/validate/runner.go index eea61fb..b338e5b 100644 --- a/validate/runner.go +++ b/validate/runner.go @@ -5,6 +5,7 @@ import ( "os" "path/filepath" + "github.com/sirupsen/logrus" "github.com/vbatts/git-validation/git" ) @@ -29,7 +30,11 @@ func NewRunner(root string, rules []Rule, commitrange string, verbose bool) (*Ru if err != nil { return nil, err } - defer os.Chdir(cwd) + defer func() { + if err := os.Chdir(cwd); err != nil { + logrus.Warnf("changing working directory to %q failed: %s", cwd, err) + } + }() if err := os.Chdir(newroot); err != nil { return nil, err @@ -56,7 +61,11 @@ func (r *Runner) Run() error { if err != nil { return err } - defer os.Chdir(cwd) + defer func() { + if err := os.Chdir(cwd); err != nil { + logrus.Warnf("changing working directory to %q failed: %s", cwd, err) + } + }() if err := os.Chdir(r.Root); err != nil { return err