cmd

package
v1.3.10 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2026 License: MIT Imports: 49 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Args []string
View Source
var RootCmd = &cobra.Command{
	Use:     locale.GetString("comigo_use"),
	Short:   locale.GetString("short_description"),
	Example: locale.GetString("comigo_example"),
	Version: config.GetVersion(),
	Long:    locale.GetString("long_description"),

	Args: cobra.ArbitraryArgs,

	PersistentPreRunE: func(command *cobra.Command, args []string) error {
		if command.Parent() != nil && command.Name() != "run" && command.Name() != "upgrade" && command.Name() != "service" {
			return nil
		}

		Args = args
		return LoadConfigFile()
	},

	RunE: func(cmd *cobra.Command, args []string) error {
		Args = args

		SetByExecutableFilename(cmd)
		cfg := config.GetCfg()
		if cfg.SelfUpgrade {
			locale.InitLanguageFromConfig(cfg.Language)
			if err := runSelfUpgrade(); err != nil {
				fmt.Fprintf(os.Stderr, "%v\n", err)
				os.Exit(1)
			}
			os.Exit(0)
		}

		if cfg.EnablePlugin {
			_ = cfg.AddPlugin("auto_flip")
			_ = cfg.AddPlugin("auto_scroll")
		}
		if cfg.EnablePlugin && cfg.Debug {
			if strings.Contains(cfg.Host, "comigo.xyz") {
				_ = cfg.AddPlugin("comigo_xyz")
			}
			logger.Infof(locale.GetString("log_cfg_host_enabled_plugin_list"), cfg.Host, cfg.EnabledPluginList)
		}

		if err := config.AutoSetCacheDir(); err != nil {
			return err
		}

		if runtime.GOOS == "windows" {

			if cfg.UnregisterContextMenu {
				if err := windows_registry.RemoveComigoFromFolderContextMenu(); err != nil {
					logger.Infof(locale.GetString("log_failed_to_unregister_windows_context_menu"), err)
				} else {
					logger.Infof("%s", locale.GetString("unregister_context_menu"))
				}
			}
			if cfg.RegisterContextMenu {
				if err := windows_registry.AddComigoToFolderContextMenu(); err != nil {
					logger.Infof(locale.GetString("log_failed_to_register_windows_context_menu"), err)
				} else {
					logger.Infof("%s", locale.GetString("register_context_menu"))
				}
			}
		}
		return nil
	},
}

RootCmd 接收书库路径和 CLI 选项。

View Source
var (

	// SystemBroadcast 等于 RegisterBroadcast("system") 返回的通道。
	SystemBroadcast chan string
)

broadcastRegistry 保存所有注册的系统广播通道,key 为自定义名称。 通过 map 的方式可以在不同包中动态注册并复用所需的广播通道。

Functions

func AddStoreUrls added in v1.1.5

func AddStoreUrls(urls []string)

AddStoreUrls 解析命令行参数,作为路径添加到StoreUrls里

func CloseProcessControl added in v1.3.9

func CloseProcessControl()

CloseProcessControl 只删除当前进程的状态文件,不影响其他实例。

func Execute

func Execute()

Execute 将所有子命令添加到根命令并适当设置标志。 由 main.main() 调用。 rootCmd 只需要执行一次。

func InitFlags added in v0.9.12

func InitFlags()

func LoadConfigFile added in v1.0.0

func LoadConfigFile() error

LoadConfigFile 配置优先级:显式参数 > 环境变量 > TOML > 默认值;文件按配置目录、程序目录、工作目录查找。

func LoadMetadata added in v1.1.5

func LoadMetadata() error

LoadMetadata 加载书籍元数据

func LoadUserPlugins added in v1.2.4

func LoadUserPlugins()

LoadUserPlugins 加载用户自定义插件

func OpenReaderBrowserIfNeeded added in v1.2.31

func OpenReaderBrowserIfNeeded()

OpenReaderBrowserIfNeeded 只负责按配置打开本机阅读页,避免 ShowQRCode 隐含浏览器副作用。

func PrepareTrayUpgradeRestart added in v1.2.22

func PrepareTrayUpgradeRestart(shutdownServer func()) error

PrepareTrayUpgradeRestart 替换二进制成功后:停止服务、拉起新进程。调用方在返回 nil 后应立即 systray.Quit 与 os.Exit。

func ProcessReady added in v1.3.9

func ProcessReady()

ProcessReady 只在 Web 监听和初次扫描完成后发布就绪,供 start 确认自己启动的进程。

func ReScanPath

func ReScanPath(storeUrl string, reScanFile bool)

ReScanPath 重新扫描目录,因为需要设置下载路径,gin 初始化后才能执行

func RegisterBroadcast added in v1.0.0

func RegisterBroadcast(name string) chan string

RegisterBroadcast 创建或返回一个已存在的广播通道。 不同模块可以调用此方法注册/获取自己的通道,实现解耦。

func RestartCurrentExecutable added in v1.2.22

func RestartCurrentExecutable() error

RestartCurrentExecutable 启动当前可执行文件的新进程(参数与环境继承),用于托盘升级后由旧进程退出、新进程接管。

func RunProcessCommand added in v1.3.9

func RunProcessCommand(args []string, out io.Writer) (bool, error)

RunProcessCommand 提前执行管理命令,防止打印版本、升级或停止之后又进入 TUI。 run 返回未处理,由原来的前台入口继续运行;Cobra 负责解析 flag,避免手工猜测参数位置。

func RunTraySelfUpgrade added in v1.2.22

func RunTraySelfUpgrade() (upgraded bool, err error)

RunTraySelfUpgrade 托盘程序用:经 comigo.xyz 检查版本,若有更新则下载对应平台安装包并替换当前进程镜像。 返回 upgraded==true 表示已成功替换,调用方应 PrepareTrayUpgradeRestart 后退出;已是最新则 upgraded==false 且 err==nil。

func SaveMetadata added in v1.1.5

func SaveMetadata()

SaveMetadata 保存书籍元数据

func ScanStore added in v1.0.0

func ScanStore()

ScanStore 扫描所有书库,取得书籍

func SetByExecutableFilename added in v1.1.7

func SetByExecutableFilename(command *cobra.Command)

SetByExecutableFilename 根据可执行文件名或软链接名自动设置部分配置项的默认值。 该函数会检查可执行文件的名称(在类Unix系统中,如果通过软链接调用,会获取软链接名), 并根据文件名中包含的关键词自动设置相应的配置项。

支持的配置项及对应的文件名关键词:

  • 阅读模式:

  • "flip" → 设置为翻页阅读

  • "scroll" → 设置为卷轴阅读

  • 布尔值配置项(文件名包含关键词时启用):

  • "rescan" → 启用自动扫描 (AutoRescan)

  • "database" → 启用数据库 (EnableDatabase)

  • "enable-upload" 或 "upload" → 启用文件上传 (EnableUpload)

  • "local" → 仅本地访问,不对局域网开放 (DisableLAN)

  • "log-file" 或 "logfile" → 输出日志文件 (LogToFile)

  • "use-cache" 或 "cache" → 启用缓存 (UseCache)

  • "cache-clean" 或 "cleancache" → 退出时清除缓存 (ClearCacheExit)

  • "read-only" 或 "readonly" → 启用只读模式 (ReadOnlyMode)

  • "open-browser" → 打开浏览器 (OpenBrowser)

  • "debug" → 启用调试模式 (Debug)

  • 语言设置:

  • "zh" 或 "chinese" → 设置为中文 (Language = "zh")

  • "en" 或 "english" → 设置为英文 (Language = "en")

  • "ja" 或 "japanese" → 设置为日文 (Language = "ja")

特殊行为:

  • 在 Windows 系统上,默认会启用 OpenBrowser(打开浏览器)
  • 在 Windows 系统上,文件名会移除 .exe 或 .EXE 后缀(保持原始大小写)
  • 关键词匹配是大小写不敏感的

使用示例:

  • 可执行文件名为 "comigo-rescan" → 启用自动扫描
  • 可执行文件名为 "comigo-open-browser-zh" → 打开浏览器并设置语言为中文
  • 可执行文件名为 "comigo-readonly" → 启用只读模式

func SetCwdAsScanPathIfNeed added in v1.1.5

func SetCwdAsScanPathIfNeed()

SetCwdAsScanPathIfNeed 未指定路径、配置文件或书库时,将当前目录作为默认书库。

func SetShutdownHandler

func SetShutdownHandler()

SetShutdownHandler 退出时清理临时文件的函数

func ShowQRCode added in v1.0.0

func ShowQRCode()

func ShowQRCodeTailscale added in v1.1.0

func ShowQRCodeTailscale(ctx context.Context)

ShowQRCodeTailscale 打印 Tailscale 访问地址的二维码

func Shutdown added in v1.3.2

func Shutdown()

Shutdown 统一清理缓存并关闭 Web、Tailscale、SSE 与 WebSocket 服务。

func StartProcessControl added in v1.3.9

func StartProcessControl() error

StartProcessControl 为每个进程建立独立管理通道,不限制其他实例。 仅 CLI 入口调用,嵌入式、Wails 和托盘继续由各自宿主管理生命周期。

Types

This section is empty.

Directories

Path Synopsis
upscale 是供 Comigo 调用的独立图片转换实验程序。
upscale 是供 Comigo 调用的独立图片转换实验程序。

Jump to

Keyboard shortcuts

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