Grank
Grank copied to clipboard
JSON 配置文件读取模式的支持
应该建立一个数据配置数据库(文本或 json):
- 以组织(用户)或仓库名为主键,
- 指定仓库时,包括其组织(用户),格式为“组织/仓库名”
- 其下级数据指定对该数据的配置:
- 非社区化匹配规则:以正则表达式方式来匹配贡献者的邮件域,配置则为企业人员
- 对于组织/用户,会遍历其名下的所有仓库,可指定筛选条件,可支持:
- star:最小 star 数要求
- last_commit:最后提交的时间
- first_commit:首次提交的时间(即仓库创建时间)
- 等等
- 强制分类:默认仓库会根据其首选语言分为文档类、前端类和代码类项目,但是可以在此强制指定。
- 数据采集范围:如没有指定,采用系统配置数据
- start: 采集开始时间
- end: 采集结束时间(如系统也未指定,则为当前时间)
- 忽略:用于在指定组织(用户)是,列出需要忽略的仓库
在运行 grank all
命令时,不需要指定仓库名或组织名,会读取该配置中列出的仓库或组织。
配置文件形态
{
"config": {
"start": "123-12-2",
"end": "123-12-1",
"token": "xxx",
"top": 3,
"star":123
},
"targets": [
{
"socialRule": "xxx",
"owner": "lctt",
"repository": "grank"
},{
"socialRule": "xxx",
"owner": "lctt",
"repository": "lcbot"
}
]
}
实现思路
- 创建一个新的命令(all 或 batch),新的命令接受一个文件作为参数(可以考虑传入文件或文件路径,即 File arguments 或 File Path arguments,相关文档http://click.palletsprojects.com/en/7.x/arguments/#file-arguments)
- 解析 JSON,提取 JSON 中的 config 来生成 config 实例。
- 对 targets 进行循环,循环时修改 config 实例中的 social.rule 为targets 中具体的。
- targets 中均为 repo ,调用 repo 分析代码即可。
建议python代码直接使用py文件作为配置文件,其他都需要处理一些路径问题。(配置和代码一起走,不同环境用不同的py,配置的选择使用不同环境的环境变量,默认为localhost)