func NewMaintainerManager(client *gh.Client, org, repo string) (*MaintainerManager, error) { config, err := LoadConfig() if err == nil { client.WithToken(config.Token) } originPath, err := getOriginPath(repo) if err != nil { return nil, err } email, err := GetMaintainerManagerEmail() if err != nil { return nil, err } err = createMaintainerManagersDirectoriesMap(originPath, "", email, config.UserName) if err != nil { return nil, err } return &MaintainerManager{ repo: gh.Repo{Name: repo, UserName: org}, client: client, maintainerDirMap: &maintainerDirMap, email: email, maintainersIds: &maintainersIds, maintainersDirMap: &maintainersDirMap, }, nil }
func addLabel(gh *octokat.Client, repo octokat.Repo, issueNum int, labels ...string) error { issue := octokat.Issue{ Number: issueNum, } return gh.ApplyLabel(repo, &issue, labels) }
func successStatus(gh *octokat.Client, repo octokat.Repo, sha, context, description string) error { _, err := gh.SetStatus(repo, sha, &octokat.StatusOptions{ State: "success", Context: context, Description: description, }) return err }
func failureStatus(gh *octokat.Client, repo octokat.Repo, sha, context, description, targetURL string) error { _, err := gh.SetStatus(repo, sha, &octokat.StatusOptions{ State: "failure", Context: context, Description: description, URL: targetURL, }) return err }
func removeLabel(gh *octokat.Client, repo octokat.Repo, issueNum int, labels ...string) error { issue := octokat.Issue{ Number: issueNum, } for _, label := range labels { return gh.RemoveLabel(repo, &issue, label) } return nil }
func NewMaintainer(client *gh.Client, org, repo string) (*Maintainer, error) { config, err := LoadConfig() if err == nil { client.WithToken(config.Token) } return &Maintainer{ repo: gh.Repo{Name: repo, UserName: org}, client: client, }, nil }
func hasStatus(gh *octokat.Client, repo octokat.Repo, sha, context string) bool { statuses, err := gh.Statuses(repo, sha, &octokat.Options{}) if err != nil { logrus.Warnf("getting status for %s for %s/%s failed: %v", sha, repo.UserName, repo.Name, err) return false } for _, status := range statuses { if status.Context == context && status.State == "success" { return true } } return false }
func removeComment(gh *octokat.Client, repo octokat.Repo, prNum, commentType string) error { // get the comments comments, err := gh.Comments(repo, prNum, &octokat.Options{}) if err != nil { return err } // check if we already made the comment for _, c := range comments { // if we already made the comment return nil if strings.ToLower(c.User.Login) == "gordontheturtle" && strings.Contains(c.Body, commentType) { return gh.RemoveComment(repo, c.Id) } } return nil }
func NewMaintainerManager(client *gh.Client, org, repo string) (*MaintainerManager, error) { config, err := LoadConfig() if err == nil { client.WithToken(config.Token) } originPath, err := getOriginPath(repo) if err != nil { return nil, fmt.Errorf("getoriginpath: %v", err) } email, err := GetMaintainerManagerEmail() if err != nil { return nil, fmt.Errorf("getemail: %v", err) } return &MaintainerManager{ repo: gh.Repo{Name: repo, UserName: org}, client: client, email: email, originPath: originPath, username: config.UserName, }, nil }
// add the comment if it does not exist already func addComment(gh *octokat.Client, repo octokat.Repo, prNum, comment, commentType string) error { // get the comments comments, err := gh.Comments(repo, prNum, &octokat.Options{}) if err != nil { return err } // check if we already made the comment for _, c := range comments { // if we already made the comment return nil if strings.ToLower(c.User.Login) == "gordontheturtle" && strings.Contains(c.Body, commentType) { logrus.Debugf("Already made comment about %q on PR %s", commentType, prNum) return nil } } // add the comment because we must not have already made it if _, err := gh.AddComment(repo, prNum, comment); err != nil { return err } logrus.Infof("Would have added comment about %q PR %s", commentType, prNum) return nil }