Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

workflow.go 908B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package projects
  4. // Action represents an action that can be taken in a workflow
  5. type Action struct {
  6. SetValue string
  7. }
  8. const (
  9. // Project workflow event names
  10. EventItemAddedToProject = "item_added_to_project"
  11. EventItemClosed = "item_closed"
  12. EventItem
  13. )
  14. type Event struct {
  15. Name string
  16. Types []string
  17. Actions []Action
  18. }
  19. type Workflow struct {
  20. Name string
  21. Events []Event
  22. ProjectID int64
  23. }
  24. func ParseWorkflow(content string) (*Workflow, error) {
  25. return &Workflow{}, nil
  26. }
  27. func (w *Workflow) FireAction(evtName string, f func(action Action) error) error {
  28. for _, evt := range w.Events {
  29. if evt.Name == evtName {
  30. for _, action := range evt.Actions {
  31. // Do something with action
  32. if err := f(action); err != nil {
  33. return err
  34. }
  35. }
  36. break
  37. }
  38. }
  39. return nil
  40. }