set_xgini.go 981 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package config
  2. import (
  3. "bufio"
  4. "bytes"
  5. "fmt"
  6. "strings"
  7. )
  8. func SetXginiBuffer(configBuffer *bytes.Buffer, xginiMap map[string]string) {
  9. tmpBuffer := new(bytes.Buffer)
  10. writer := bufio.NewWriter(tmpBuffer)
  11. scanner := bufio.NewScanner(configBuffer)
  12. for scanner.Scan() {
  13. line := scanner.Text()
  14. for k, v := range xginiMap {
  15. if strings.Contains(line, k) {
  16. parts := strings.SplitN(line, "=", 2)
  17. if len(parts) == 2 {
  18. newLine := strings.TrimSpace(parts[0]) + "= " + v + ";"
  19. line = fmt.Sprint(" " + newLine)
  20. break // 停止继续处理该行
  21. }
  22. }
  23. }
  24. _, err := writer.WriteString(line + "\n")
  25. if err != nil {
  26. fmt.Println(err)
  27. return
  28. }
  29. }
  30. err := writer.Flush()
  31. if err != nil {
  32. fmt.Println(err)
  33. return
  34. }
  35. // 使用 tmpBuffer 中的内容更新 configBuffer
  36. configBuffer.Reset()
  37. _, err = configBuffer.ReadFrom(tmpBuffer)
  38. if err != nil {
  39. fmt.Println(err)
  40. return
  41. }
  42. //fmt.Println("配置文件已成功更新。")
  43. }