From f6f4f1b4d0e3036d90d5fb1a16a4f36d482a92e0 Mon Sep 17 00:00:00 2001 From: hubble_zhu Date: Mon, 11 Jan 2021 21:08:33 +0800 Subject: [PATCH 1/2] init package wiki-bot --- README.en.md | 36 ------------ README.md | 37 ------------- SoftwareHelper.py | 50 +++++++++++++++++ main.py | 125 ++++++++++++++++++++++++++++++++++++++++++ openeuler-wiki-bot.py | 16 ++++++ utils/Issue.py | 18 ++++++ utils/PullRequest.py | 16 ++++++ utils/Sig.py | 26 +++++++++ utils/Software.py | 26 +++++++++ utils/__init__.py | 0 10 files changed, 277 insertions(+), 73 deletions(-) delete mode 100644 README.en.md delete mode 100644 README.md create mode 100644 SoftwareHelper.py create mode 100644 main.py create mode 100644 openeuler-wiki-bot.py create mode 100644 utils/Issue.py create mode 100644 utils/PullRequest.py create mode 100644 utils/Sig.py create mode 100644 utils/Software.py create mode 100644 utils/__init__.py diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 2d61621..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# openeuler-wiki-bot - -#### Description -A wiki-generate tool for openEuler sigs - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index 866e7d1..0000000 --- a/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# openeuler-wiki-bot - -#### 介绍 -A wiki-generate tool for openEuler sigs - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/SoftwareHelper.py b/SoftwareHelper.py new file mode 100644 index 0000000..bfd2cbd --- /dev/null +++ b/SoftwareHelper.py @@ -0,0 +1,50 @@ + +import urllib.request +import bs4 + +from utils.Software import Software +from utils.Issue import Issue +from utils.PullRequest import PullRequest + + +class SoftwareHelper: + + @staticmethod + def generate_issue_info(software): + issue_url = software.getUrl() + "/issues" + print("Issue_URL: ", issue_url) + page = urllib.request.urlopen(issue_url) + contents = page.read().decode('utf-8') + + # parse html + soup = bs4.BeautifulSoup(contents, 'html.parser') + elem_list = soup.find_all('a', attrs=['class', 'title'], href=True) + for elem in elem_list: + issue_title = elem.attrs['title'].strip() + issue_url = "https://gitee.com" + elem.attrs['href'] + issue = Issue(issue_title, issue_url) + software.add_issue(issue) + print(issue_title, issue_url) + + @staticmethod + def generate_pr_info(software): + pr_url = software.getUrl() + "/pulls" + print("PullRequest URL: ", pr_url) + page = urllib.request.urlopen(pr_url) + contents = page.read().decode('utf-8') + + # parse html + soup = bs4.BeautifulSoup(contents, 'html.parser') + elem_list = soup.find_all('a', attrs=['class', 'title'], href=True) + for elem in elem_list: + pr_title = elem.attrs['title'].strip() + pr_url = "https://gitee.com" + elem.attrs['href'] + pr = PullRequest(pr_title, pr_url) + software.add_pr(pr) + print(pr_title, pr_url) + + +if __name__ == '__main__': + software = Software("openEuler/infrastructure") + SoftwareHelper.generate_issue_info(software) + diff --git a/main.py b/main.py new file mode 100644 index 0000000..1cd6d8b --- /dev/null +++ b/main.py @@ -0,0 +1,125 @@ +import urllib.request +import re +import xlsxwriter + +from utils.Sig import Sig +from utils.Software import Software +from SoftwareHelper import SoftwareHelper + +sig_info_url = "https://gitee.com/openeuler/community/raw/master/sig/sigs.yaml" +sig_list = [] +sig_number = 0 + +sig_pattern = r"- name: (.*)" +openeuler_software_pattern = r"- (openeuler/.*)" +src_openeuler_software_pattern = r"- (src-openeuler/.*)" + +BlockList = [ + "openeuler/blog", +] + + +def init_sig_info(): + print("===== Start Init Sig Info =====") + tmp_sig = None + + page = urllib.request.urlopen(sig_info_url) + contents = page.read().decode('utf-8') + # print(contents) + lines = contents.split("\n") + for line in lines: + result = re.search(sig_pattern, line) + if result: + print("get one sig: ", result.group(1)) + tmp_sig = Sig(result.group(1)) + sig_list.append(tmp_sig) + continue + + result = re.search(openeuler_software_pattern, line) + if result: + print("get one openeuler software: ", result.group(1)) + tmp_software = Software(result.group(1)) + if tmp_software.getSoftwareName() in BlockList: + print(tmp_software.getSoftwareName(), " is blocked, skip and continue") + continue + if tmp_sig: + tmp_sig.add_software(tmp_software) + continue + + result = re.search(src_openeuler_software_pattern, line) + if result: + print("get one src-openeuler software: ", result.group(1)) + tmp_software = Software(result.group(1)) + if tmp_software.getSoftwareName() in BlockList: + print(tmp_software.getSoftwareName(), " is blocked, skip and continue") + continue + if tmp_sig: + tmp_sig.add_software(tmp_software) + continue + print("===== Init Sig Info Done =====") + + +def process_sig_issue(): + print("===== Start Process Sig Issue =====") + for sig in sig_list: + for software in sig.getSoftwares(): + SoftwareHelper.generate_issue_info(software) + print("===== Process Sig Issue Done =====") + + +def process_sig_pr(): + print("===== Start Process Sig Pull Request =====") + for sig in sig_list: + for software in sig.getSoftwares(): + SoftwareHelper.generate_pr_info(software) + print("===== Process Sig Pull Request Done =====") + + +def generate_report(): + print("===== Start Generate Report =====") + workbook = xlsxwriter.Workbook('C:/Users/z00494275/Desktop/sig_info.xlsx') + worksheet = workbook.add_worksheet(name="sig_info") + worksheet.write('A1', 'Sig') + worksheet.write('B1', '软件包') + worksheet.write('C1', '软件包URL') + worksheet.write('D1', '待办事项类型') + worksheet.write('E1', 'title') + worksheet.write('F1', 'url') + + row = 1 + col = 0 + for sig in sig_list: + for software in sig.getSoftwares(): + for issue in software.getIssue(): + worksheet.write(row, col, sig.getSigName()) + worksheet.write(row, col + 1, software.getSoftwareName()) + worksheet.write(row, col + 2, software.getUrl()) + worksheet.write(row, col + 3, "issue") + worksheet.write(row, col + 4, issue.get_title()) + worksheet.write(row, col + 5, issue.get_url()) + + for pr in software.getPullRequests(): + worksheet.write(row, col, sig.getSigName()) + worksheet.write(row, col + 1, software.getSoftwareName()) + worksheet.write(row, col + 2, software.getUrl()) + worksheet.write(row, col + 3, "PR") + worksheet.write(row, col + 4, pr.get_title()) + worksheet.write(row, col + 5, pr.get_url()) + + row = row + 1 + + workbook.close() + print("===== Generate Report Done =====") + + +def main(): + init_sig_info() + process_sig_issue() + process_sig_pr() + generate_report() + + +if __name__ == '__main__': + # TODO: Add commmand line + main() + diff --git a/openeuler-wiki-bot.py b/openeuler-wiki-bot.py new file mode 100644 index 0000000..6d9ed29 --- /dev/null +++ b/openeuler-wiki-bot.py @@ -0,0 +1,16 @@ +import argparse + + +def main(): + parser = argparse.ArgumentParser(description="openEuler wiki bot tool.") + parser.add_argument("-l", "--list", action="store_true", default=False, help="Show all sig info.") + parser.add_argument("-s", "--sig", ) + parser.add_argument("-p", "--pr", action="store_true", default=False, help="Show all pr info.") + parser.add_argument("-i", "--issue", action="store_true", default=False, help="Show all issue info.") + args = parser.parse_args() + return args + + +if __name__ == '__main__': + main() + diff --git a/utils/Issue.py b/utils/Issue.py new file mode 100644 index 0000000..f17ac9b --- /dev/null +++ b/utils/Issue.py @@ -0,0 +1,18 @@ + + +class Issue: + + def __init__(self, title, url): + self.__title = title + self.__creator = None + self.__assigner = None + self.__description = None + self.__createDate = None + self.__url = url + + def get_title(self): + return self.__title + + def get_url(self): + return self.__url + diff --git a/utils/PullRequest.py b/utils/PullRequest.py new file mode 100644 index 0000000..9cad010 --- /dev/null +++ b/utils/PullRequest.py @@ -0,0 +1,16 @@ + + +class PullRequest: + + def __init__(self, title, url): + self.__title = title + self.__creator = None + self.__createDate = None + self.__ci_status = None + self.__url = url + + def get_title(self): + return self.__title + + def get_url(self): + return self.__url diff --git a/utils/Sig.py b/utils/Sig.py new file mode 100644 index 0000000..8b96117 --- /dev/null +++ b/utils/Sig.py @@ -0,0 +1,26 @@ + + +class Sig: + + def __init__(self, sigName): + self.__sigName = sigName + self.__softwares = [] + self.__maintainers = [] + self.__committers = [] + + def add_software(self, software): + self.__softwares.append(software) + + def add_maintainer(self, maintainer): + self.__maintainers.append(maintainer) + + def add_committer(self, committer): + self.__committers.append(committer) + + def getSigName(self): + return self.__sigName + + def getSoftwares(self): + return self.__softwares + + diff --git a/utils/Software.py b/utils/Software.py new file mode 100644 index 0000000..14416df --- /dev/null +++ b/utils/Software.py @@ -0,0 +1,26 @@ + + +class Software: + + def __init__(self, softwareName): + self.__softwareName = softwareName + self.__issues = [] + self.__pullRequests = [] + + def add_issue(self, issue): + self.__issues.append(issue) + + def add_pr(self, pullRequest): + self.__pullRequests.append(pullRequest) + + def getSoftwareName(self): + return self.__softwareName + + def getUrl(self): + return "https://gitee.com/" + self.__softwareName + + def getIssue(self): + return self.__issues + + def getPullRequests(self): + return self.__pullRequests \ No newline at end of file diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..e69de29 -- Gitee From 5f521a4e5567a6c9c19150e9840047474c0a7846 Mon Sep 17 00:00:00 2001 From: hubble_zhu Date: Tue, 12 Jan 2021 17:47:40 +0800 Subject: [PATCH 2/2] openeuler-wiki-bot init --- .gitignore | 2 + Helper/__init__.py | 0 SoftwareHelper.py => Helper/package_helper.py | 22 ++- Helper/report_helper.py | 85 ++++++++++++ Helper/sig_helper.py | 76 +++++++++++ main.py | 125 ------------------ openeuler-wiki-bot.py | 65 +++++++-- utils/Issue.py | 2 +- utils/Package.py | 26 ++++ utils/PullRequest.py | 3 +- utils/Sig.py | 10 +- utils/Software.py | 26 ---- 12 files changed, 261 insertions(+), 181 deletions(-) create mode 100644 .gitignore create mode 100644 Helper/__init__.py rename SoftwareHelper.py => Helper/package_helper.py (71%) create mode 100644 Helper/report_helper.py create mode 100644 Helper/sig_helper.py delete mode 100644 main.py create mode 100644 utils/Package.py delete mode 100644 utils/Software.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99bc465 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +*.xlsx diff --git a/Helper/__init__.py b/Helper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SoftwareHelper.py b/Helper/package_helper.py similarity index 71% rename from SoftwareHelper.py rename to Helper/package_helper.py index bfd2cbd..68c127f 100644 --- a/SoftwareHelper.py +++ b/Helper/package_helper.py @@ -2,16 +2,16 @@ import urllib.request import bs4 -from utils.Software import Software +from utils.Package import Package from utils.Issue import Issue from utils.PullRequest import PullRequest -class SoftwareHelper: +class PackageHelper: @staticmethod - def generate_issue_info(software): - issue_url = software.getUrl() + "/issues" + def generate_issue_info(package): + issue_url = package.get_url() + "/issues" print("Issue_URL: ", issue_url) page = urllib.request.urlopen(issue_url) contents = page.read().decode('utf-8') @@ -23,12 +23,12 @@ class SoftwareHelper: issue_title = elem.attrs['title'].strip() issue_url = "https://gitee.com" + elem.attrs['href'] issue = Issue(issue_title, issue_url) - software.add_issue(issue) + package.add_issue(issue) print(issue_title, issue_url) @staticmethod - def generate_pr_info(software): - pr_url = software.getUrl() + "/pulls" + def generate_pr_info(package): + pr_url = package.get_url() + "/pulls" print("PullRequest URL: ", pr_url) page = urllib.request.urlopen(pr_url) contents = page.read().decode('utf-8') @@ -40,11 +40,5 @@ class SoftwareHelper: pr_title = elem.attrs['title'].strip() pr_url = "https://gitee.com" + elem.attrs['href'] pr = PullRequest(pr_title, pr_url) - software.add_pr(pr) + package.add_pr(pr) print(pr_title, pr_url) - - -if __name__ == '__main__': - software = Software("openEuler/infrastructure") - SoftwareHelper.generate_issue_info(software) - diff --git a/Helper/report_helper.py b/Helper/report_helper.py new file mode 100644 index 0000000..09e57bc --- /dev/null +++ b/Helper/report_helper.py @@ -0,0 +1,85 @@ +import xlsxwriter + + +class ReportHelper: + + @staticmethod + def generate_sheet_sig(sig_sheet, sig_list): + sig_sheet.write('A1', 'Sig') + sig_sheet.write('B1', '软件包') + sig_sheet.write('C1', '软件包URL') + + row = 1 + col = 0 + for sig in sig_list: + for package in sig.get_package_list(): + sig_sheet.write(row, col, sig.get_sig_name()) + sig_sheet.write(row, col + 1, package.get_package_name()) + sig_sheet.write(row, col + 2, package.get_url()) + row = row + 1 + + @staticmethod + def generate_sheet_pr(pr_sheet, sig_list): + pr_sheet.write('A1', 'Sig') + pr_sheet.write('B1', '软件包') + pr_sheet.write('C1', '软件包URL') + pr_sheet.write('D1', 'PR title') + pr_sheet.write('E1', 'PR url') + + row = 1 + col = 0 + for sig in sig_list: + for package in sig.get_package_list(): + for pr in package.get_pr_list(): + pr_sheet.write(row, col, sig.get_sig_name()) + pr_sheet.write(row, col + 1, package.get_package_name()) + pr_sheet.write(row, col + 2, package.get_url()) + pr_sheet.write(row, col + 3, pr.get_title()) + pr_sheet.write(row, col + 4, pr.get_url()) + row = row + 1 + + @staticmethod + def generate_sheet_issue(issue_sheet, sig_list): + issue_sheet.write('A1', 'Sig') + issue_sheet.write('B1', '软件包') + issue_sheet.write('C1', '软件包URL') + issue_sheet.write('D1', 'Issue title') + issue_sheet.write('E1', 'Issue url') + + row = 1 + col = 0 + for sig in sig_list: + for package in sig.get_package_list(): + for issue in package.get_issue_list(): + issue_sheet.write(row, col, sig.get_sig_name()) + issue_sheet.write(row, col + 1, package.get_package_name()) + issue_sheet.write(row, col + 2, package.get_url()) + issue_sheet.write(row, col + 3, issue.get_title()) + issue_sheet.write(row, col + 4, issue.get_url()) + row = row + 1 + + @staticmethod + def generate_report(sig_list, file_path='sig_info.xlsx'): + print("===== Start Generate Report =====") + workbook = xlsxwriter.Workbook(file_path) + sig_sheet = workbook.add_worksheet(name="sig_info") + ReportHelper.generate_sheet_sig(sig_sheet, sig_list) + + pr_sheet = workbook.add_worksheet(name="pr_info") + ReportHelper.generate_sheet_pr(pr_sheet, sig_list) + + issue_sheet = workbook.add_worksheet(name="issue_info") + ReportHelper.generate_sheet_issue(issue_sheet, sig_list) + + workbook.close() + print("===== Generate Report Done =====") + print("Report file: ", file_path) + + @staticmethod + def print_sig_list(sig_list): + print("===== Start Print Sig List =====") + for sig in sig_list: + print(sig.get_sig_name()) + print("Total sig num: ", len(sig_list)) + print("===== Print Sig List Done =====") + diff --git a/Helper/sig_helper.py b/Helper/sig_helper.py new file mode 100644 index 0000000..46eee1f --- /dev/null +++ b/Helper/sig_helper.py @@ -0,0 +1,76 @@ +import urllib.request +import re + +from utils.Sig import Sig +from utils.Package import Package + +from Helper.package_helper import PackageHelper + + +sig_info_url = "https://gitee.com/openeuler/community/raw/master/sig/sigs.yaml" +sig_pattern = r"- name: (.*)" +openeuler_software_pattern = r"- (openeuler/.*)" +src_openeuler_software_pattern = r"- (src-openeuler/.*)" + +BlockList = [ + "openeuler/blog", +] + + +class SigHelper: + + @staticmethod + def init_sig_info(sig_list): + print("===== Start Init Sig Info... =====") + tmp_sig = None + + page = urllib.request.urlopen(sig_info_url) + contents = page.read().decode('utf-8') + # print(contents) + lines = contents.split("\n") + for line in lines: + result = re.search(sig_pattern, line) + if result: + # print("get one sig: ", result.group(1)) + tmp_sig = Sig(result.group(1)) + sig_list.append(tmp_sig) + continue + + result = re.search(openeuler_software_pattern, line) + if result: + # print("get one openeuler software: ", result.group(1)) + tmp_package = Package(result.group(1)) + if tmp_package.get_package_name() in BlockList: + # print(tmp_package.getSoftwareName(), " is blocked, skip and continue") + continue + if tmp_sig: + tmp_sig.add_software(tmp_package) + continue + + result = re.search(src_openeuler_software_pattern, line) + if result: + # print("get one src-openeuler software: ", result.group(1)) + tmp_package = Package(result.group(1)) + if tmp_package.get_package_name() in BlockList: + # print(tmp_package.getSoftwareName(), " is blocked, skip and continue") + continue + if tmp_sig: + tmp_sig.add_software(tmp_package) + continue + print("===== Init Sig Info Done =====") + + @staticmethod + def process_sig_issue(sig_list): + print("===== Start Process Sig Issue =====") + for sig in sig_list: + for package in sig.get_package_list(): + PackageHelper.generate_issue_info(package) + print("===== Process Sig Issue Done =====") + + @staticmethod + def process_sig_pr(sig_list): + print("===== Start Process Sig Pull Request =====") + for sig in sig_list: + for package in sig.get_package_list(): + PackageHelper.generate_pr_info(package) + print("===== Process Sig Pull Request Done =====") diff --git a/main.py b/main.py deleted file mode 100644 index 1cd6d8b..0000000 --- a/main.py +++ /dev/null @@ -1,125 +0,0 @@ -import urllib.request -import re -import xlsxwriter - -from utils.Sig import Sig -from utils.Software import Software -from SoftwareHelper import SoftwareHelper - -sig_info_url = "https://gitee.com/openeuler/community/raw/master/sig/sigs.yaml" -sig_list = [] -sig_number = 0 - -sig_pattern = r"- name: (.*)" -openeuler_software_pattern = r"- (openeuler/.*)" -src_openeuler_software_pattern = r"- (src-openeuler/.*)" - -BlockList = [ - "openeuler/blog", -] - - -def init_sig_info(): - print("===== Start Init Sig Info =====") - tmp_sig = None - - page = urllib.request.urlopen(sig_info_url) - contents = page.read().decode('utf-8') - # print(contents) - lines = contents.split("\n") - for line in lines: - result = re.search(sig_pattern, line) - if result: - print("get one sig: ", result.group(1)) - tmp_sig = Sig(result.group(1)) - sig_list.append(tmp_sig) - continue - - result = re.search(openeuler_software_pattern, line) - if result: - print("get one openeuler software: ", result.group(1)) - tmp_software = Software(result.group(1)) - if tmp_software.getSoftwareName() in BlockList: - print(tmp_software.getSoftwareName(), " is blocked, skip and continue") - continue - if tmp_sig: - tmp_sig.add_software(tmp_software) - continue - - result = re.search(src_openeuler_software_pattern, line) - if result: - print("get one src-openeuler software: ", result.group(1)) - tmp_software = Software(result.group(1)) - if tmp_software.getSoftwareName() in BlockList: - print(tmp_software.getSoftwareName(), " is blocked, skip and continue") - continue - if tmp_sig: - tmp_sig.add_software(tmp_software) - continue - print("===== Init Sig Info Done =====") - - -def process_sig_issue(): - print("===== Start Process Sig Issue =====") - for sig in sig_list: - for software in sig.getSoftwares(): - SoftwareHelper.generate_issue_info(software) - print("===== Process Sig Issue Done =====") - - -def process_sig_pr(): - print("===== Start Process Sig Pull Request =====") - for sig in sig_list: - for software in sig.getSoftwares(): - SoftwareHelper.generate_pr_info(software) - print("===== Process Sig Pull Request Done =====") - - -def generate_report(): - print("===== Start Generate Report =====") - workbook = xlsxwriter.Workbook('C:/Users/z00494275/Desktop/sig_info.xlsx') - worksheet = workbook.add_worksheet(name="sig_info") - worksheet.write('A1', 'Sig') - worksheet.write('B1', '软件包') - worksheet.write('C1', '软件包URL') - worksheet.write('D1', '待办事项类型') - worksheet.write('E1', 'title') - worksheet.write('F1', 'url') - - row = 1 - col = 0 - for sig in sig_list: - for software in sig.getSoftwares(): - for issue in software.getIssue(): - worksheet.write(row, col, sig.getSigName()) - worksheet.write(row, col + 1, software.getSoftwareName()) - worksheet.write(row, col + 2, software.getUrl()) - worksheet.write(row, col + 3, "issue") - worksheet.write(row, col + 4, issue.get_title()) - worksheet.write(row, col + 5, issue.get_url()) - - for pr in software.getPullRequests(): - worksheet.write(row, col, sig.getSigName()) - worksheet.write(row, col + 1, software.getSoftwareName()) - worksheet.write(row, col + 2, software.getUrl()) - worksheet.write(row, col + 3, "PR") - worksheet.write(row, col + 4, pr.get_title()) - worksheet.write(row, col + 5, pr.get_url()) - - row = row + 1 - - workbook.close() - print("===== Generate Report Done =====") - - -def main(): - init_sig_info() - process_sig_issue() - process_sig_pr() - generate_report() - - -if __name__ == '__main__': - # TODO: Add commmand line - main() - diff --git a/openeuler-wiki-bot.py b/openeuler-wiki-bot.py index 6d9ed29..2ffb0a1 100644 --- a/openeuler-wiki-bot.py +++ b/openeuler-wiki-bot.py @@ -1,16 +1,63 @@ import argparse -def main(): - parser = argparse.ArgumentParser(description="openEuler wiki bot tool.") - parser.add_argument("-l", "--list", action="store_true", default=False, help="Show all sig info.") - parser.add_argument("-s", "--sig", ) - parser.add_argument("-p", "--pr", action="store_true", default=False, help="Show all pr info.") - parser.add_argument("-i", "--issue", action="store_true", default=False, help="Show all issue info.") - args = parser.parse_args() - return args +from Helper.sig_helper import SigHelper +from Helper.report_helper import ReportHelper + +sig_list = [] + + +def init_parser(): + parser = argparse.ArgumentParser(description="openEuler wiki bot.") + + parser.add_argument("-l", "--list", action="store_true", default=False, help="List all sig info.") + parser.add_argument("-r", "--report", action="store_true", default=False, help="Generate information report.") + + parser.add_argument("-s", "--sig", type=str, help="Specify sig group.") + parser.add_argument("-a", "--all", action="store_true", default=False, help="Report information for all sig.") + return parser + + +def process_list(): + SigHelper.init_sig_info(sig_list) + ReportHelper.print_sig_list(sig_list) + + +def process_report_sig(): + SigHelper.init_sig_info(sig_list) + for sig in sig_list: + if sig.get_sig_name() == args.sig: + tmp_sig_list = [sig] + SigHelper.process_sig_pr(tmp_sig_list) + SigHelper.process_sig_issue(tmp_sig_list) + ReportHelper.generate_report(tmp_sig_list) + return + print("Unrecognized sig: ", args.sig, ", please check input.") + + +def process_report_all(): + SigHelper.init_sig_info(sig_list) + SigHelper.process_sig_pr(sig_list) + SigHelper.process_sig_issue(sig_list) + ReportHelper.generate_report(sig_list) + + +def process_report(args): + if args.sig: + process_report_sig() + elif args.all: + process_report_all() + else: + print("Unrecognized command option, please check input.") if __name__ == '__main__': - main() + parser = init_parser() + args = parser.parse_args() + if args.list: + process_list() + elif args.report: + process_report(args) + else: + parser.print_help() diff --git a/utils/Issue.py b/utils/Issue.py index f17ac9b..ebf14a0 100644 --- a/utils/Issue.py +++ b/utils/Issue.py @@ -7,7 +7,7 @@ class Issue: self.__creator = None self.__assigner = None self.__description = None - self.__createDate = None + self.__create_date = None self.__url = url def get_title(self): diff --git a/utils/Package.py b/utils/Package.py new file mode 100644 index 0000000..0ff0a98 --- /dev/null +++ b/utils/Package.py @@ -0,0 +1,26 @@ + + +class Package: + + def __init__(self, softwareName): + self.__package_name = softwareName + self.__issues = [] + self.__pull_requests = [] + + def add_issue(self, issue): + self.__issues.append(issue) + + def add_pr(self, pull_request): + self.__pull_requests.append(pull_request) + + def get_package_name(self): + return self.__package_name + + def get_url(self): + return "https://gitee.com/" + self.__package_name + + def get_issue_list(self): + return self.__issues + + def get_pr_list(self): + return self.__pull_requests diff --git a/utils/PullRequest.py b/utils/PullRequest.py index 9cad010..988bd83 100644 --- a/utils/PullRequest.py +++ b/utils/PullRequest.py @@ -5,9 +5,10 @@ class PullRequest: def __init__(self, title, url): self.__title = title self.__creator = None - self.__createDate = None + self.__create_date = None self.__ci_status = None self.__url = url + self.__status = None def get_title(self): return self.__title diff --git a/utils/Sig.py b/utils/Sig.py index 8b96117..f67afd0 100644 --- a/utils/Sig.py +++ b/utils/Sig.py @@ -4,12 +4,12 @@ class Sig: def __init__(self, sigName): self.__sigName = sigName - self.__softwares = [] + self.__packages = [] self.__maintainers = [] self.__committers = [] def add_software(self, software): - self.__softwares.append(software) + self.__packages.append(software) def add_maintainer(self, maintainer): self.__maintainers.append(maintainer) @@ -17,10 +17,10 @@ class Sig: def add_committer(self, committer): self.__committers.append(committer) - def getSigName(self): + def get_sig_name(self): return self.__sigName - def getSoftwares(self): - return self.__softwares + def get_package_list(self): + return self.__packages diff --git a/utils/Software.py b/utils/Software.py deleted file mode 100644 index 14416df..0000000 --- a/utils/Software.py +++ /dev/null @@ -1,26 +0,0 @@ - - -class Software: - - def __init__(self, softwareName): - self.__softwareName = softwareName - self.__issues = [] - self.__pullRequests = [] - - def add_issue(self, issue): - self.__issues.append(issue) - - def add_pr(self, pullRequest): - self.__pullRequests.append(pullRequest) - - def getSoftwareName(self): - return self.__softwareName - - def getUrl(self): - return "https://gitee.com/" + self.__softwareName - - def getIssue(self): - return self.__issues - - def getPullRequests(self): - return self.__pullRequests \ No newline at end of file -- Gitee