Documentation
¶
Overview ¶
Package branchrules implements MCP tool handlers for GitLab Branch Rules retrieval using the GraphQL API. Branch Rules provide an aggregated read-only view of branch protections, approval rules, and external status checks. Individual protected branch management continues to use REST via existing packages.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FormatListMarkdown ¶
func FormatListMarkdown(out ListOutput) string
FormatListMarkdown renders a paginated list of branch rules as Markdown.
func RegisterTools ¶
func RegisterTools(server *mcp.Server, client *gitlabclient.Client)
RegisterTools registers Branch Rules tools on the MCP server.
Types ¶
type ApprovalRule ¶
type ApprovalRule struct {
Name string `json:"name"`
ApprovalsRequired int `json:"approvals_required"`
Type string `json:"type,omitempty"`
}
ApprovalRule represents an approval rule associated with a branch rule.
type BranchProtection ¶
type BranchProtection struct {
AllowForcePush bool `json:"allow_force_push"`
CodeOwnerApprovalRequired bool `json:"code_owner_approval_required"`
}
BranchProtection holds protection settings for a branch rule.
type BranchRuleItem ¶
type BranchRuleItem struct {
Name string `json:"name"`
IsDefault bool `json:"is_default"`
IsProtected bool `json:"is_protected"`
MatchingBranchesCount int `json:"matching_branches_count"`
CreatedAt string `json:"created_at,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
BranchProtection *BranchProtection `json:"branch_protection,omitempty"`
ApprovalRules []ApprovalRule `json:"approval_rules,omitempty"`
ExternalStatusChecks []ExternalStatusCheck `json:"external_status_checks,omitempty"`
}
BranchRuleItem represents a branch rule summary.
type ExternalStatusCheck ¶
type ExternalStatusCheck struct {
Name string `json:"name"`
ExternalURL string `json:"external_url"`
}
ExternalStatusCheck represents an external status check on a branch rule.
type ListInput ¶
type ListInput struct {
ProjectPath string `json:"project_path" jsonschema:"required,Project full path (e.g. my-group/my-project)"`
toolutil.GraphQLPaginationInput
}
ListInput is the input for listing branch rules.
type ListOutput ¶
type ListOutput struct {
toolutil.HintableOutput
Rules []BranchRuleItem `json:"rules"`
Pagination toolutil.GraphQLPaginationOutput `json:"pagination"`
}
ListOutput is the output for listing branch rules.
func List ¶
func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)
List retrieves branch rules for a project via the GitLab GraphQL API. It selects the EE query (with approval rules, external status checks, and code owner approval) when the client is configured for Enterprise, otherwise it uses the CE-compatible query that omits EE-only fields.