MCPcopy Create free account
hub / github.com/github/gh-aw / parseIssueTrigger

Function parseIssueTrigger

pkg/workflow/trigger_parser.go:326–372  ·  view source on GitHub ↗

parseIssueTrigger parses issue triggers

(tokens []string)

Source from the content-addressed store, hash-verified

324
325// parseIssueTrigger parses issue triggers
326func parseIssueTrigger(tokens []string) (*TriggerIR, error) {
327 if len(tokens) < 2 {
328 return nil, errors.New("issue trigger requires an activity type. Expected format: 'issue <type>'. Valid types: opened, edited, closed, reopened, assigned, unassigned, labeled, unlabeled, deleted, transferred. Example: 'issue opened'")
329 }
330
331 activityType := tokens[1]
332
333 // Map common activity types
334 validTypes := map[string]struct {
335 }{
336 "opened": {},
337 "edited": {},
338 "closed": {},
339 "reopened": {},
340 "assigned": {},
341 "unassigned": {},
342 "labeled": {},
343 "unlabeled": {},
344 "deleted": {},
345 "transferred": {},
346 }
347
348 if !setutil.Contains(validTypes, activityType) {
349 return nil, fmt.Errorf("invalid issue activity type: '%s'. Valid types: opened, edited, closed, reopened, assigned, unassigned, labeled, unlabeled, deleted, transferred. Example: 'issue opened'", activityType)
350 }
351
352 ir := &TriggerIR{
353 Event: "issues",
354 Types: []string{activityType},
355 AdditionalEvents: map[string]any{
356 "workflow_dispatch": nil,
357 },
358 }
359
360 // Check for label filter: "issue opened labeled <label>"
361 if len(tokens) >= 4 && tokens[2] == "labeled" {
362 label := strings.Join(tokens[3:], " ")
363 triggerParserLog.Printf("Parsed issue trigger with label filter: type=%s, label=%s", activityType, label)
364 ir.Conditions = []string{
365 fmt.Sprintf("contains(github.event.issue.labels.*.name, '%s')", label),
366 }
367 } else {
368 triggerParserLog.Printf("Parsed issue trigger: type=%s", activityType)
369 }
370
371 return ir, nil
372}
373
374// parseDiscussionTrigger parses discussion triggers
375func parseDiscussionTrigger(tokens []string) (*TriggerIR, error) {

Callers 1

Calls 3

ContainsFunction · 0.92
ErrorfMethod · 0.45
PrintfMethod · 0.45

Tested by

no test coverage detected