123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package config
- import (
- "bufio"
- "bytes"
- "fmt"
- "strings"
- )
- func SetXginiBuffer(configBuffer *bytes.Buffer, xginiMap map[string]string) {
- tmpBuffer := new(bytes.Buffer)
- writer := bufio.NewWriter(tmpBuffer)
- scanner := bufio.NewScanner(configBuffer)
- for scanner.Scan() {
- line := scanner.Text()
- for k, v := range xginiMap {
- if strings.Contains(line, k) {
- parts := strings.SplitN(line, "=", 2)
- if len(parts) == 2 {
- newLine := strings.TrimSpace(parts[0]) + "= " + v + ";"
- line = fmt.Sprint(" " + newLine)
- break // 停止继续处理该行
- }
- }
- }
- _, err := writer.WriteString(line + "\n")
- if err != nil {
- fmt.Println(err)
- return
- }
- }
- err := writer.Flush()
- if err != nil {
- fmt.Println(err)
- return
- }
- // 使用 tmpBuffer 中的内容更新 configBuffer
- configBuffer.Reset()
- _, err = configBuffer.ReadFrom(tmpBuffer)
- if err != nil {
- fmt.Println(err)
- return
- }
- //fmt.Println("配置文件已成功更新。")
- }
- func GetXginiValue(buffer *bytes.Buffer, key string) (string, error) {
- scanner := bufio.NewScanner(buffer)
- for scanner.Scan() {
- line := scanner.Text()
- if strings.Contains(line, key) {
- parts := strings.Split(line, "=")
- if len(parts) > 1 && strings.TrimSpace(parts[0]) == key {
- valuePart := strings.Split(parts[1], ";")
- if len(valuePart) > 0 {
- return strings.TrimSpace(valuePart[0]), nil
- }
- }
- }
- }
- if err := scanner.Err(); err != nil {
- return "", err
- }
- return "", fmt.Errorf("未查找到xugu.ini %s 字段,key not found", key)
- }
|