Skip to content
1dot75cm edited this page Jan 16, 2017 · 1 revision

__main__ 入口调用 __init__.main

  • 初始化 config.config 配置(从 checker.ini 读配置至config.file), backend.BackendManager 后端管理器
  • helper() 接收 cli 参数,保存至 config.config.cli 对象
    • configChainMap 保持 runtime, cli, file, defaults 四个dict,并用 opts 读取“视图”dict的参数
  • 调用 locale.getlocale() 确定语言,启动 start_guistart_cli
    • start_gui:从 frontends.gui 导入 MainWindow,启动 GUI
    • start_cli:从 frontends.cli 导入 MainCommand,启动 CLI

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_urlsget_rules 获取规则。

Clone this wiki locally