-
Notifications
You must be signed in to change notification settings - Fork 3
design
__main__
入口调用 __init__.main
:
- 初始化
config.config
配置(从checker.ini
读配置至config.file
),backend.BackendManager
后端管理器 -
helper()
接收 cli 参数,保存至config.config.cli
对象-
config
用ChainMap
保持runtime
,cli
,file
,defaults
四个dict,并用opts
读取“视图”dict的参数
-
- 调用
locale.getlocale()
确定语言,启动start_gui
或start_cli
- start_gui:从
frontends.gui
导入MainWindow
,启动 GUI - start_cli:从
frontends.cli
导入MainCommand
,启动 CLI
- start_gui:从
frontends.gui.MainWindow
:初始化窗口 setupUi
,初始化内容队列(编辑表格会实时修改队列中对应的 Checker
类对象);打开文件时将 Checker
对象载入内容队列;检查时初始化worker,将内容队列对象加入任务队列,由线程执行 app.Checker.run_checker()
方法,通过 backmgr
调用指定 backends.*
开始检查。完成检查后,更新对象,刷新主界面。(哪些工具方法加入frontends.utils?线程类,文件操作?剥离UI部分?)
-
frontends.gui.settings.SettingDialog
:从opts
读取配置,载入widgets;关闭时更新runtime dict
frontends.cli.MainCommand
:通过 -f|-u
参数指定输入文件/url,初始化内容队列;检查时初始化worker,将内容队列对象加入任务队列,由线程执行 app.Checker.run_checker()
方法,通过 backmgr
调用指定 backends.*
开始检查。完成检查后,更新对象,按指定格式(json, pretty)输出(-o file, stdin)。
app.Checker
:负责保存对象信息,调用匹配的 backends.*
进行版本检查,转换 backend 返回的版本信息。
backend后端结构:参考anitya/lib/backends, feeluown/plugin.py。多后端模块,实例化 Checker
时调用 backmgr.get_backend
方法,通过比较 backends.github.domain
和对象 url
从而匹配指定后端。在 Checker
对象保存实例化的 BaseBackend
子类。检查更新时,调用子类的 get_urls
和get_rules
获取规则。