package enforcereleaselabel

import (
	"github.com/google/go-github/v47/github"

	"edge-infra.dev/pkg/f8n/devinfra/jack/constants"
	"edge-infra.dev/pkg/f8n/devinfra/jack/plugin"
)

func init() {
	plugin.RegisterPullRequestHandler(constants.PluginEnforceReleaseLabel, handlePR)
}

func handlePR(hp plugin.HandlerParams, pre github.PullRequestEvent) {
	hp.Log.WithName(constants.PluginEnforceReleaseLabel)

	action := pre.GetAction()
	switch action {
	case "opened":
		if err := openingReleaseLabel(hp, pre); err != nil {
			hp.Log.Error(err, "Issue: Failed to add release label to new PR")
			return
		}
	case "labeled":
		if err := addedManualLabel(hp, pre); err != nil {
			hp.Log.Error(err, "Issue: Failed to add release label to PR")
			return
		}
	case "unlabeled":
		if err := checkRemoveLabel(hp, pre); err != nil {
			hp.Log.Error(err, "Issue: Failed to remove release label on PR")
			return
		}
	}
}