mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-21 02:30:14 +00:00
ci: require agentcompat stress validation
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package workflowpolicy
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func mappingValue(mapping *yaml.Node, key string) (*yaml.Node, bool) {
|
||||
if mapping == nil || mapping.Kind != yaml.MappingNode {
|
||||
return nil, false
|
||||
}
|
||||
for index := 0; index < len(mapping.Content); index += 2 {
|
||||
if mapping.Content[index].Value == key {
|
||||
return mapping.Content[index+1], true
|
||||
}
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func mappingEntries(mapping *yaml.Node) [][2]*yaml.Node {
|
||||
if mapping == nil || mapping.Kind != yaml.MappingNode {
|
||||
return nil
|
||||
}
|
||||
entries := make([][2]*yaml.Node, 0, len(mapping.Content)/2)
|
||||
for index := 0; index < len(mapping.Content); index += 2 {
|
||||
entries = append(entries, [2]*yaml.Node{mapping.Content[index], mapping.Content[index+1]})
|
||||
}
|
||||
return entries
|
||||
}
|
||||
|
||||
func scalarString(node *yaml.Node) (string, bool) {
|
||||
if node == nil || node.Kind != yaml.ScalarNode || node.Tag != "!!str" {
|
||||
return "", false
|
||||
}
|
||||
return node.Value, true
|
||||
}
|
||||
|
||||
func explicitFalse(node *yaml.Node) bool {
|
||||
if node == nil || node.Kind != yaml.ScalarNode || node.Tag != "!!bool" {
|
||||
return false
|
||||
}
|
||||
return strings.EqualFold(strings.TrimSpace(node.Value), "false")
|
||||
}
|
||||
|
||||
func positiveInteger(node *yaml.Node) bool {
|
||||
if node == nil || node.Kind != yaml.ScalarNode || node.Tag != "!!int" {
|
||||
return false
|
||||
}
|
||||
value, err := strconv.Atoi(node.Value)
|
||||
return err == nil && value > 0
|
||||
}
|
||||
|
||||
func walkScalars(node *yaml.Node, visit func(*yaml.Node)) {
|
||||
if node.Kind == yaml.ScalarNode {
|
||||
visit(node)
|
||||
}
|
||||
for _, child := range node.Content {
|
||||
walkScalars(child, visit)
|
||||
}
|
||||
}
|
||||
|
||||
func walkMappings(node *yaml.Node, visit func(*yaml.Node)) {
|
||||
if node.Kind == yaml.MappingNode {
|
||||
visit(node)
|
||||
}
|
||||
for _, child := range node.Content {
|
||||
walkMappings(child, visit)
|
||||
}
|
||||
}
|
||||
|
||||
func containsScalar(node *yaml.Node, expected string) bool {
|
||||
found := false
|
||||
walkScalars(node, func(scalar *yaml.Node) {
|
||||
if scalar.Value == expected {
|
||||
found = true
|
||||
}
|
||||
})
|
||||
return found
|
||||
}
|
||||
Reference in New Issue
Block a user