瀏覽代碼

refactor(netplan): 自定义YAML序列化以支持2空格缩进

替换默认Marshal为自定义encoder,确保生成的netplan配置文件使用2空格缩进,提升可读性及兼容性。
yangkaixiang 1 月之前
父節點
當前提交
12980dc007
共有 1 個文件被更改,包括 17 次插入2 次删除
  1. 17 2
      server/internal/network/netplan/netplan.go

+ 17 - 2
server/internal/network/netplan/netplan.go

@@ -1,6 +1,7 @@
 package netplan
 
 import (
+	"bytes"
 	"fmt"
 	"os"
 	"path/filepath"
@@ -81,7 +82,7 @@ func (s *Service) Write(path string, targetInterface string, input model.Interfa
 		delete(target, "gateway4")
 		delete(target, "routes")
 		delete(target, "nameservers")
-		output, err := yaml.Marshal(&cfg)
+		output, err := marshalYAML(&cfg)
 		if err != nil {
 			return err
 		}
@@ -103,13 +104,27 @@ func (s *Service) Write(path string, targetInterface string, input model.Interfa
 		delete(target, "nameservers")
 	}
 
-	output, err := yaml.Marshal(&cfg)
+	output, err := marshalYAML(&cfg)
 	if err != nil {
 		return err
 	}
 	return os.WriteFile(path, output, 0600)
 }
 
+func marshalYAML(value any) ([]byte, error) {
+	var output bytes.Buffer
+	encoder := yaml.NewEncoder(&output)
+	encoder.SetIndent(2)
+	if err := encoder.Encode(value); err != nil {
+		_ = encoder.Close()
+		return nil, err
+	}
+	if err := encoder.Close(); err != nil {
+		return nil, err
+	}
+	return output.Bytes(), nil
+}
+
 func ensureMap(parent map[string]any, key string) map[string]any {
 	if existing, ok := parent[key].(map[string]any); ok {
 		return existing