refactor: extract command execution logic into runQmpcMMKVCLi function and improve logging in LoadMMKVOrDefault and parseQmpcMMKVCliOutput

This commit is contained in:
鲁树人
2026-10-19 23:54:18 +09:00
parent c0437c435a
commit e22bf8f38b
2 changed files with 17 additions and 24 deletions
+2 -2
View File
@@ -52,10 +52,10 @@ func parseQmpcMMKVCliOutput(r io.Reader, logger *zap.Logger) common.QMCKeys {
}
if err := sc.Err(); err != nil {
logger.Warn("LoadMMKVOrDefault: error reading qmpc-mmkv-cli output", zap.Error(err))
logger.Warn("parseQmpcMMKVCliOutput: error reading qmpc-mmkv-cli output", zap.Error(err))
}
if nameRead {
logger.Warn("LoadMMKVOrDefault: qmpc-mmkv-cli output has odd number of lines, ignoring last line",
logger.Warn("parseQmpcMMKVCliOutput: qmpc-mmkv-cli output has odd number of lines, ignoring last line",
zap.String("line", name),
)
}
+15 -22
View File
@@ -2,41 +2,34 @@ package qmc
import (
"bytes"
"errors"
"os/exec"
"git.um-react.app/um/cli/algo/common"
"go.uber.org/zap"
)
func runQmpcMMKVCLi(exe string) (stdout, stderr bytes.Buffer, err error) {
cmd := exec.Command(exe, "-f", "plaintext", "-o", "-")
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err = cmd.Run()
return stdout, stderr, err
}
func LoadMMKVOrDefault(opts MMKVLoaderOptions, logger *zap.Logger) (result common.QMCKeys, err error) {
exe := opts.CliExe
cmd := exec.Command(exe, "-f", "plaintext", "-o", "-")
var stdout, stderr bytes.Buffer
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err = cmd.Run()
stdout, stderr, err := runQmpcMMKVCLi(exe)
if err != nil {
var exitErr *exec.ExitError
if errors.As(err, &exitErr) {
logger.Warn("LoadMMKVOrDefault: qmpc-mmkv-cli exited with non-zero status",
zap.String("exe", exe),
zap.Int("exit_code", exitErr.ExitCode()),
zap.String("stderr", stderr.String()),
)
} else {
logger.Warn("LoadMMKVOrDefault: failed to run qmpc-mmkv-cli",
zap.String("exe", exe),
zap.Error(err),
zap.String("stderr", stderr.String()),
)
}
logger.Warn("LoadMMKVOrDefault: qmpc-mmkv-cli exited with error",
zap.String("exe", exe),
zap.Error(err),
zap.String("stderr", stderr.String()),
)
return nil, nil
}
result = parseQmpcMMKVCliOutput(&stdout, logger)
logger.Debug("Keys loaded from qmpc-mmkv-cli", zap.Int("len", len(result)))
logger.Debug("LoadMMKVOrDefault: Keys loaded from qmpc-mmkv-cli", zap.Int("count", len(result)))
return result, nil
}