cli

package
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2026 License: MIT Imports: 34 Imported by: 0

Documentation

Overview

internal/cli/config_set.go

config set 把「写盘 + 自启同步 + 运行状态验证 + 动作建议」整体委托给 configapp.Application.ApplyConfig。CLI 层只负责:

  • 读取用户层 snapshot(raw bytes + Config 同源),取 revision;
  • 应用 dotted-key 草稿修改(内存,config.Set);
  • 调 ApplyConfig(control lock 内原子编排:revision 冲突保护、写盘、自启同步、 stale metadata 清理、动作建议生成);
  • 按 stdout/stderr 合同输出:稳定成功行写 stdout,动作建议/说明/warning 写 stderr。

不在 CLI 复制 effect 判断或自启判断(全交给 ApplyConfig)。

internal/cli/config_tui.go

config tui 把保存依赖收敛为单一 configapp.Application.ApplyConfig 入口。 CLI 层只负责:

  • 装配 Application(与 config set 同一工厂);
  • 用 runtimecfg.LoadUserConfigSnapshot 做一次读取,同时初始化 TUI 的 draft(用户层)、diskRevision(expectedRevision 基准);
  • 用 loadConfig() 加载 display(运行时层,显示参考);
  • 把 ApplyConfig 包装成 tui.ApplyFunc(固定 confirmDataDirMigration=false, data_dir 在 TUI 只读)。

不再注入独立的 write/sync/checker 回调;自启同步、revision 冲突保护、动作建议 全部由 ApplyConfig 在 control lock 内原子编排。TUI 不直接 import control/service (通过 ApplyFunc 解耦)。

internal/cli/restart.go

internal/cli/run_internal.go

internal/cli/start.go

internal/cli/status.go

internal/cli/stop.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExecuteWithConsole added in v0.1.1

func ExecuteWithConsole(cmd *cobra.Command) int

ExecuteWithConsole 是 main 的执行骨架:先建立控制台 UTF-8 会话再执行命令, 成功与错误两条路径都恰好恢复一次原代码页(进程退出路径不能依赖 defer)。 错误文本已由 cobra 单次输出("Error: …"),此处只把错误映射为退出码, 不重复打印。

func InitConsole added in v0.1.1

func InitConsole() func()

InitConsole 在非 Windows 平台无控制台代码页概念,返回 nil 表示无需恢复。

func NewRootCmd

func NewRootCmd() *cobra.Command

NewRootCmd 构造用户可见的根命令。

仅在此处调用一次 buildinfo.Current(),随后由内部 newRootCmd 同时配置根命令的 Version/template 与 version 子命令,保证两者 使用同一份构建信息快照。

Types

type UpdateService

type UpdateService interface {
	Check(ctx context.Context, opts update.CheckOptions) (update.CheckResult, error)
	Apply(ctx context.Context, opts update.ApplyOptions) (update.ApplyResult, error)
}

UpdateService 是 update 命令对 update.Service 的窄依赖,仅暴露 Check 与 Apply 两个方法。 用接口而非 *update.Service,使 CLI 测试可注入 stub 覆盖所有结果合同, 不触及真实网络或文件系统;生产实现由默认 updateServiceFactory 装配真实 *update.Service。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL