Skip to content
This repository has been archived by the owner on May 19, 2024. It is now read-only.

Latest commit

 

History

History
68 lines (47 loc) · 2.21 KB

README.md

File metadata and controls

68 lines (47 loc) · 2.21 KB

Github PR Commenter

Go Report Card Github Release

What is it?

A convenience libary that wraps the go-github library and allows you to quickly add comments to the lines of changes in a comment.

The intention is this is used with CI tools to automatically comment on new Github pull requests when static analysis checks are failing.

For an example of this in use, see the tfsec-pr-commenter-action. This Github action will run against your Terraform and report any security issues that are present in the code before it is committed.

How do I use it?

The intention is to keep the interface as clean as possible; steps are

  • create a commenter for a repo and PR
  • write comments to the commenter
    • comments which exist will not be written
    • comments that aren't appropriate (not part of the PR) will not be written

Expected Errors

The following errors can be handled - I hope these are self explanatory

type PrDoesNotExistError

type NotPartOfPrError

type CommentAlreadyWrittenError

type CommentNotValidError

Basic Usage Example

package main

import (
    "github.com/owenrumney/go-github-pr-commenter/commenter"
    log "github.com/sirupsen/logrus"
    "os"
)


// Create the commenter
token := os.Getenv("GITHUB_TOKEN")

c, err := commenter.NewCommenter(token, "tfsec", "tfsec-example-project", 8)
if err != nil {
    fmt.Println(err.Error())
}

// process whatever static analysis results you've gathered
for _, result := myResults {
    err = c.WriteMultiLineComment(result.Path, result.Comment, result.StartLine, result.EndLine)
    if err != nil {
        if errors.Is(err, commenter.CommentNotValidError{}) {
            log.Debugf("result not relevant for commit. %s", err.Error())
        } else {
            log.Errorf("an error occurred writing the comment: %s", err.Error())
        }
    }
}