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

Function parseDiscussionTrigger

pkg/workflow/trigger_parser.go:375–411  ·  view source on GitHub ↗

parseDiscussionTrigger parses discussion triggers

(tokens []string)

Source from the content-addressed store, hash-verified

373
374// parseDiscussionTrigger parses discussion triggers
375func parseDiscussionTrigger(tokens []string) (*TriggerIR, error) {
376 if len(tokens) < 2 {
377 return nil, errors.New("discussion trigger requires an activity type. Expected format: 'discussion <type>'. Valid types: created, edited, deleted, transferred, pinned, unpinned, labeled, unlabeled, locked, unlocked, category_changed, answered, unanswered. Example: 'discussion created'")
378 }
379
380 activityType := tokens[1]
381
382 // Map common activity types
383 validTypes := map[string]struct {
384 }{
385 "created": {},
386 "edited": {},
387 "deleted": {},
388 "transferred": {},
389 "pinned": {},
390 "unpinned": {},
391 "labeled": {},
392 "unlabeled": {},
393 "locked": {},
394 "unlocked": {},
395 "category_changed": {},
396 "answered": {},
397 "unanswered": {},
398 }
399
400 if !setutil.Contains(validTypes, activityType) {
401 return nil, fmt.Errorf("invalid discussion activity type: '%s'. Valid types: created, edited, deleted, transferred, pinned, unpinned, labeled, unlabeled, locked, unlocked, category_changed, answered, unanswered. Example: 'discussion created'", activityType)
402 }
403
404 return &TriggerIR{
405 Event: "discussion",
406 Types: []string{activityType},
407 AdditionalEvents: map[string]any{
408 "workflow_dispatch": nil,
409 },
410 }, nil
411}
412
413// parseManualTrigger parses manual invocation triggers
414func parseManualTrigger(input string) (*TriggerIR, error) {

Callers 1

Calls 2

ContainsFunction · 0.92
ErrorfMethod · 0.45

Tested by

no test coverage detected