yjp 1 rok pred
rodič
commit
d9d97d4a9e

+ 8 - 0
approve_former/flow.go

@@ -8,8 +8,16 @@ metadata:
   name: [[ .name ]]
 spec:
   entrypoint: approve-flow
+  arguments:
+    parameters:
+      - name: object
+        value: {}
+
   templates:
     - name: approve-flow
+      inputs:
+        parameters:
+          - name: object
       dag:
         tasks:
           [[- if .childNodesContentLines ]]

+ 55 - 0
approve_former/or.go

@@ -1 +1,56 @@
 package approve_former
+
+import "strings"
+
+type Or struct {
+	childNodes []Node
+}
+
+func NewOr(childNodes ...Node) *Or {
+	return &Or{
+		childNodes: childNodes,
+	}
+}
+
+func (or *Or) GetDepends() string {
+	var depends string
+	for _, childNode := range or.childNodes {
+		if depends == "" {
+			depends = childNode.GetDepends()
+		} else {
+			depends = depends + " && " + childNode.GetDepends()
+		}
+	}
+
+	return depends
+}
+
+func (or *Or) GetWhen() string {
+	var when string
+	for _, childNode := range or.childNodes {
+		if when == "" {
+			when = "(" + childNode.GetWhen() + ")"
+		} else {
+			when = when + " || " + "(" + childNode.GetWhen() + ")"
+		}
+	}
+
+	return when
+}
+
+func (or *Or) Render(upperNode Node) (string, error) {
+	var content string
+
+	for _, childNode := range or.childNodes {
+		childNodeContent, err := childNode.Render(upperNode)
+		if err != nil {
+			return "", err
+		}
+
+		content = content + childNodeContent + "\n"
+	}
+
+	content = strings.TrimSuffix(content, "\n")
+
+	return content, nil
+}

+ 6 - 2
test/approve_former_test.go

@@ -9,11 +9,15 @@ import (
 func TestApproveFormer(t *testing.T) {
 	flow := approve_former.NewFlow("flow",
 		approve_former.NewSign("A"),
-		approve_former.NewAnd(
+		approve_former.NewOr(
 			approve_former.NewSign("B"),
 			approve_former.NewSign("C"),
 		),
-		approve_former.NewSign("E"),
+		approve_former.NewAnd(
+			approve_former.NewSign("D"),
+			approve_former.NewSign("E"),
+		),
+		approve_former.NewSign("F"),
 	)
 
 	flowDefinition, err := flow.Render(nil)