1.概述:
main.py是repo命令执行的第二站,在入口脚本repo文件完成检验和初始化执行环境后,即将repo命令参数传递给main.py进行详细的参数解析和repo command对应对象调用运行。即是说main.py起到总调度的作用,根据repo命令参数判断需要调用哪个command对象并完成对象创建和属性赋值,最后运行command对象的execute方法执行repo command。
2.数据结构:
main.py中用到了三种较复杂且重要的数据结构,分别为_Repo类、all_commands对象数组、XmlManifest类;其中_Repo类是在main.py内部声明,后两者是import的外部包内容;另外还继续用到之前的关键变量 repodir(.repo)。
本文中主要分析_Repo类的使用,all_commands和XmlManifest在后续的subcmds学习部分和manifest_xml.py学习部分会单独分析。
3.主体思路:
__main__ -->
_Main(sys.args[1:]) -->
optparse.OptionParser.parse_