Beispiel #1
0
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
}
Beispiel #2
0
func addLabel(gh *octokat.Client, repo octokat.Repo, issueNum int, labels ...string) error {
	issue := octokat.Issue{
		Number: issueNum,
	}

	return gh.ApplyLabel(repo, &issue, labels)
}
Beispiel #3
0
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
}
Beispiel #4
0
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
}
Beispiel #5
0
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
}
Beispiel #6
0
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
}
Beispiel #7
0
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
}
Beispiel #8
0
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
}
Beispiel #9
0
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
}
Beispiel #10
0
// 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
}