Documentation
¶
Index ¶
- Variables
- func AddStoreUrls(urls []string)
- func Execute()
- func GetBroadcast(name string) (chan string, bool)
- func InitFlags()
- func LoadConfigFile()
- func LoadMetadata()
- func LoadUserPlugins()
- func PrepareTrayUpgradeRestart(shutdownServer func(), releaseSingleInstance func()) error
- func ReScanPath(storeUrl string, reScanFile bool)
- func RegisterBroadcast(name string) chan string
- func ReloadConfigHandler(e fsnotify.Event)
- func RestartCurrentExecutable() error
- func RunTraySelfUpgrade() (upgraded bool, err error)
- func SaveMetadata()
- func ScanStore()
- func SetByExecutableFilename()
- func SetCwdAsScanPathIfNeed()
- func SetDaemon()
- func SetShutdownHandler()
- func ShowQRCode()
- func ShowQRCodeTailscale(ctx context.Context)
Constants ¶
This section is empty.
Variables ¶
var ( DemonFlag bool StopDaemonFlag bool )
DemonFlag 正确地实装,需要理解守护进程的概念 需要去 cmd/init_flags.go 设置flag
var Args []string
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 没有任何子命令的情况下时的基本命令
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 GetBroadcast ¶ added in v1.0.0
GetBroadcast 返回指定名称的广播通道(只读锁)。
func LoadConfigFile ¶ added in v1.0.0
func LoadConfigFile()
LoadConfigFile 读取顺序:RAM(代码当中设定的默认值)+命令行参数 -> HomeDirectory -> ProgramDirectory -> WorkingDirectory
func PrepareTrayUpgradeRestart ¶ added in v1.2.22
func PrepareTrayUpgradeRestart(shutdownServer func(), releaseSingleInstance func()) error
PrepareTrayUpgradeRestart 替换二进制成功后:可选释放单实例锁、停止服务、拉起新进程。调用方在返回 nil 后应立即 systray.Quit 与 os.Exit。
func ReScanPath ¶
ReScanPath 重新扫描目录,因为需要设置下载路径,gin 初始化后才能执行
func RegisterBroadcast ¶ added in v1.0.0
RegisterBroadcast 创建或返回一个已存在的广播通道。 不同模块可以调用此方法注册/获取自己的通道,实现解耦。
func ReloadConfigHandler ¶ added in v1.1.0
监听配置文件变更 优雅地重启或停止 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
RunTraySelfUpgrade 托盘程序用:经 comigo.xyz 检查版本,若有更新则下载对应平台安装包并替换当前进程镜像。 返回 upgraded==true 表示已成功替换,调用方应 PrepareTrayUpgradeRestart 后退出;已是最新则 upgraded==false 且 err==nil。
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 ShowQRCode ¶ added in v1.0.0
func ShowQRCode()
func ShowQRCodeTailscale ¶ added in v1.1.0
ShowQRCodeTailscale 打印 Tailscale 访问地址的二维码
Types ¶
This section is empty.