|
|
@@ -1,37 +1,15 @@
|
|
|
package approve_former
|
|
|
|
|
|
-const signTemplate = `
|
|
|
-[[- $name := .name -]]
|
|
|
-[[- $upperNodeNames := .upper_node_names -]]
|
|
|
+import "fmt"
|
|
|
|
|
|
-- name: [[ $name ]]
|
|
|
+const signTemplate = `- name: [[ .name ]]
|
|
|
template: approval
|
|
|
- [[- if $upperNodeNames ]]
|
|
|
- [[- if eq (len $upperNodeNames) 1 ]]
|
|
|
- depends: "[[ index $upperNodeNames 0 ]].Succeeded"
|
|
|
- when: "{{ tasks.[[- index $upperNodeNames 0 -]].outputs.parameters.approve }} == 通过"
|
|
|
- [[- else -]]
|
|
|
- depends: "
|
|
|
- [[- range $index, $upper_node_name := $upperNodeNames -]]
|
|
|
- [[- if eq $index 0 -]]
|
|
|
- [[ $upper_node_name ]].Succeeded
|
|
|
- [[- else ]]
|
|
|
- && [[ $upper_node_name ]].Succeeded
|
|
|
- [[- end -]]
|
|
|
- [[- end -]]
|
|
|
- "
|
|
|
- when: "
|
|
|
- [[- range $index, $upper_node_name := $upperNodeNames -]]
|
|
|
- [[- if eq $index 0 -]]
|
|
|
- {{ tasks.[[ $upper_node_name ]].outputs.parameters.approve }} == 通过
|
|
|
- [[- else -]]
|
|
|
- && {{ tasks.[[ $upper_node_name ]].outputs.parameters.approve }} == 通过
|
|
|
- [[- end -]]
|
|
|
- [[- end -]]
|
|
|
- "
|
|
|
- [[- end -]]
|
|
|
- [[- end -]]
|
|
|
-`
|
|
|
+ [[- if .depends ]]
|
|
|
+ depends: "[[ .depends ]]"
|
|
|
+ [[- end ]]
|
|
|
+ [[- if .when ]]
|
|
|
+ when: "[[ .when ]]"
|
|
|
+ [[- end -]]`
|
|
|
|
|
|
type Sign struct {
|
|
|
Name string
|
|
|
@@ -43,22 +21,24 @@ func NewSign(name string) *Sign {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func (sign *Sign) GetName() string {
|
|
|
- return sign.Name
|
|
|
+func (sign *Sign) GetDepends() string {
|
|
|
+ return fmt.Sprintf("%s.Succeeded", sign.Name)
|
|
|
}
|
|
|
|
|
|
-func (sign *Sign) GetChildNodes() []Node {
|
|
|
- return make([]Node, 0)
|
|
|
+func (sign *Sign) GetWhen() string {
|
|
|
+ return fmt.Sprintf(`{{ tasks.%s.outputs.parameters.approve }} == 通过`, sign.Name)
|
|
|
}
|
|
|
|
|
|
-func (sign *Sign) Render(upperNodes ...Node) (string, error) {
|
|
|
- upperNodeNames := make([]string, 0)
|
|
|
- for _, upperNode := range upperNodes {
|
|
|
- upperNodeNames = append(upperNodeNames, upperNode.GetName())
|
|
|
+func (sign *Sign) Render(upperNode Node) (string, error) {
|
|
|
+ if upperNode == nil {
|
|
|
+ return render("sign", signTemplate, map[string]any{
|
|
|
+ "name": sign.Name,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
return render("sign", signTemplate, map[string]any{
|
|
|
- "name": sign.Name,
|
|
|
- "upper_node_names": upperNodeNames,
|
|
|
+ "name": sign.Name,
|
|
|
+ "depends": upperNode.GetDepends(),
|
|
|
+ "when": upperNode.GetWhen(),
|
|
|
})
|
|
|
}
|