mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-18 20:30:51 +08:00
feat(config): use block style for YAML maps/lists; keep [] for empty
This commit is contained in:
@@ -326,6 +326,7 @@ func SaveConfigPreserveComments(configFile string, cfg *Config) error {
|
|||||||
|
|
||||||
// Merge generated into original in-place, preserving comments/order of existing nodes.
|
// Merge generated into original in-place, preserving comments/order of existing nodes.
|
||||||
mergeMappingPreserve(original.Content[0], generated.Content[0])
|
mergeMappingPreserve(original.Content[0], generated.Content[0])
|
||||||
|
normalizeCollectionNodeStyles(original.Content[0])
|
||||||
|
|
||||||
// Write back.
|
// Write back.
|
||||||
f, err := os.Create(configFile)
|
f, err := os.Create(configFile)
|
||||||
@@ -566,3 +567,30 @@ func removeMapKey(mapNode *yaml.Node, key string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// normalizeCollectionNodeStyles forces YAML collections to use block notation, keeping
|
||||||
|
// lists and maps readable. Empty sequences retain flow style ([]) so empty list markers
|
||||||
|
// remain compact.
|
||||||
|
func normalizeCollectionNodeStyles(node *yaml.Node) {
|
||||||
|
if node == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch node.Kind {
|
||||||
|
case yaml.MappingNode:
|
||||||
|
node.Style = 0
|
||||||
|
for i := range node.Content {
|
||||||
|
normalizeCollectionNodeStyles(node.Content[i])
|
||||||
|
}
|
||||||
|
case yaml.SequenceNode:
|
||||||
|
if len(node.Content) == 0 {
|
||||||
|
node.Style = yaml.FlowStyle
|
||||||
|
} else {
|
||||||
|
node.Style = 0
|
||||||
|
}
|
||||||
|
for i := range node.Content {
|
||||||
|
normalizeCollectionNodeStyles(node.Content[i])
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
// Scalars keep their existing style to preserve quoting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user