cmd

package
v1.2.30 Latest Latest
Warning

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

Go to latest
Published: May 10, 2026 License: MIT Imports: 39 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DemonFlag      bool
	StopDaemonFlag bool
)

DemonFlag 正确地实装,需要理解守护进程的概念 需要去 cmd/init_flags.go 设置flag

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"),

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

		SetByExecutableFilename()
		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.EnabledPluginList = append(cfg.EnabledPluginList, "auto_flip", "auto_scroll")
		}
		if cfg.EnablePlugin && cfg.Debug {
			if strings.Contains(cfg.Host, "comigo.xyz") {
				cfg.EnabledPluginList = append(cfg.EnabledPluginList, "comigo_xyz")
			}
			logger.Infof(locale.GetString("log_cfg_host_enabled_plugin_list"), cfg.Host, cfg.EnabledPluginList)
		}

		config.AutoSetCacheDir()

		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"))
				}
			}
		}
	},
}

RootCmd 没有任何子命令的情况下时的基本命令

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 Execute

func Execute()

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

func GetBroadcast added in v1.0.0

func GetBroadcast(name string) (chan string, bool)

GetBroadcast 返回指定名称的广播通道(只读锁)。

func InitFlags added in v0.9.12

func InitFlags()

func LoadConfigFile added in v1.0.0

func LoadConfigFile()

LoadConfigFile 读取顺序:RAM(代码当中设定的默认值)+命令行参数 -> HomeDirectory -> ProgramDirectory -> WorkingDirectory

func LoadMetadata added in v1.1.5

func LoadMetadata()

LoadMetadata 加载书籍元数据

func LoadUserPlugins added in v1.2.4

func LoadUserPlugins()

LoadUserPlugins 加载用户自定义插件

func PrepareTrayUpgradeRestart added in v1.2.22

func PrepareTrayUpgradeRestart(shutdownServer func(), releaseSingleInstance func()) error

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

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 ReloadConfigHandler added in v1.1.0

func ReloadConfigHandler(e fsnotify.Event)

监听配置文件变更 优雅地重启或停止 https://learnku.com/docs/gin-gonic/1.7/examples-graceful-restart-or-stop/11376

func RestartCurrentExecutable added in v1.2.22

func RestartCurrentExecutable() error

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

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()

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

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

  • 阅读模式:

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

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

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

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

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

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

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

  • "generate-metadata" 或 "metadata" → 生成元数据 (GenerateMetaData)

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

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

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

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

  • "single-instance" 或 "singleinstance" → 启用单实例模式 (EnableSingleInstance)

  • "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()

SetCwdAsScanPath 当没有指定扫描路径时,把当前工作目录作为扫描路径

func SetDaemon added in v1.0.0

func SetDaemon()

SetDaemon 设置守护进程, To terminate the daemon use: kill `cat comigo.pid` 该函数会在Unix系统上将当前进程转化为守护进程,并在后台运行。 如果当前系统不是Unix系统,或者没有指定启动或停止守护进程的参数,则直接返回。 https://github.com/sevlyar/go-daemon https://github.com/sevlyar/go-daemon/blob/v0.1.6/examples/cmd/gd-simple/simple.go go run main.go --start go run main.go --stop

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 访问地址的二维码

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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