1
0
mirror of https://github.com/konpa/devicon.git synced 2025-01-19 14:27:04 +01:00

Build bot now check both PR and devicon.json

This commit is contained in:
Thomas Bui 2021-06-17 18:22:01 -07:00
parent 9f3bb9a36e
commit 0486aa765a
4 changed files with 33 additions and 23 deletions

View File

@ -6,7 +6,7 @@ import os
import re import re
def find_new_icons(devicon_json_path: str, icomoon_json_path: str): def find_new_icons_in_devicon_json(devicon_json_path: str, icomoon_json_path: str):
""" """
Find the newly added icons by finding the difference between Find the newly added icons by finding the difference between
the devicon.json and the icomoon.json. the devicon.json and the icomoon.json.

View File

@ -46,7 +46,7 @@ def set_env_var(key: str, value: str, delimiter: str='~'):
raise Exception("This function doesn't support this platform: " + platform.system()) raise Exception("This function doesn't support this platform: " + platform.system())
def find_object_added_in_this_pr(icons: List[dict], pr_title: str): def find_object_added_in_pr(icons: List[dict], pr_title: str):
""" """
Find the icon name from the PR title. Find the icon name from the PR title.
:param icons, a list of the font objects found in the devicon.json. :param icons, a list of the font objects found in the devicon.json.

View File

@ -20,31 +20,31 @@ def main():
runner = None runner = None
try: try:
args = arg_getters.get_selenium_runner_args() args = arg_getters.get_selenium_runner_args()
new_icons = get_icons_for_building(args.devicon_json_path, args.token) new_icons = get_icons_for_building(args.icomoon_json_path, args.devicon_json_path, args.token)
if len(new_icons) == 0: if len(new_icons) == 0:
sys.exit("No files need to be uploaded. Ending script...") sys.exit("No files need to be uploaded. Ending script...")
print(f"There are {len(new_icons)} icons to be build. Here are they:", *new_icons, sep = "\n") print(f"There are {len(new_icons)} icons to be build. Here are they:", *new_icons, sep = "\n")
print("Begin optimizing files") # print("Begin optimizing files")
optimize_svgs(new_icons, args.icons_folder_path) # optimize_svgs(new_icons, args.icons_folder_path)
print("Updating the icomoon json") # print("Updating the icomoon json")
update_icomoon_json(new_icons, args.icomoon_json_path) # update_icomoon_json(new_icons, args.icomoon_json_path)
icon_svgs = filehandler.get_svgs_paths( # icon_svgs = filehandler.get_svgs_paths(
new_icons, args.icons_folder_path, icon_versions_only=True) # new_icons, args.icons_folder_path, icon_versions_only=True)
runner = SeleniumRunner(args.download_path, # runner = SeleniumRunner(args.download_path,
args.geckodriver_path, args.headless) # args.geckodriver_path, args.headless)
runner.upload_icomoon(args.icomoon_json_path) # runner.upload_icomoon(args.icomoon_json_path)
runner.upload_svgs(icon_svgs) # runner.upload_svgs(icon_svgs)
zip_name = "devicon-v1.0.zip" # zip_name = "devicon-v1.0.zip"
zip_path = Path(args.download_path, zip_name) # zip_path = Path(args.download_path, zip_name)
runner.download_icomoon_fonts(zip_path) # runner.download_icomoon_fonts(zip_path)
filehandler.extract_files(str(zip_path), args.download_path) # filehandler.extract_files(str(zip_path), args.download_path)
filehandler.rename_extracted_files(args.download_path) # filehandler.rename_extracted_files(args.download_path)
print("Task completed.") # print("Task completed.")
except TimeoutException as e: except TimeoutException as e:
util.exit_with_err("Selenium Time Out Error: \n" + str(e)) util.exit_with_err("Selenium Time Out Error: \n" + str(e))
except Exception as e: except Exception as e:
@ -54,21 +54,31 @@ def main():
runner.close() runner.close()
def get_icons_for_building(devicon_json_path: str, token: str): def get_icons_for_building(icomoon_json_path: str, devicon_json_path: str, token: str):
""" """
Get the icons for building. Get the icons for building.
:param icomoon_json_path - the path to the `icomoon.json`.
:param devicon_json_path - the path to the `devicon.json`. :param devicon_json_path - the path to the `devicon.json`.
:param token - the token to access the GitHub API. :param token - the token to access the GitHub API.
""" """
all_icons = filehandler.get_json_file_content(devicon_json_path) devicon_json = filehandler.get_json_file_content(devicon_json_path)
pull_reqs = api_handler.get_merged_pull_reqs_since_last_release(token) pull_reqs = api_handler.get_merged_pull_reqs_since_last_release(token)
new_icons = [] new_icons = []
for pull_req in pull_reqs: for pull_req in pull_reqs:
if api_handler.is_feature_icon(pull_req): if api_handler.is_feature_icon(pull_req):
filtered_icon = util.find_object_added_in_this_pr(all_icons, pull_req["title"]) filtered_icon = util.find_object_added_in_pr(devicon_json, pull_req["title"])
if filtered_icon not in new_icons: if filtered_icon not in new_icons:
new_icons.append(filtered_icon) new_icons.append(filtered_icon)
# get any icons that might not have been found by the API
new_icons_from_devicon_json = filehandler.find_new_icons_in_devicon_json(
devicon_json_path, icomoon_json_path)
for icon in new_icons_from_devicon_json:
if icon not in new_icons:
new_icons.append(icon)
return new_icons return new_icons

View File

@ -17,7 +17,7 @@ def main():
new_icons = filehandler.get_json_file_content(args.devicon_json_path) new_icons = filehandler.get_json_file_content(args.devicon_json_path)
# get only the icon object that has the name matching the pr title # get only the icon object that has the name matching the pr title
filtered_icon = util.find_object_added_in_this_pr(new_icons, args.pr_title) filtered_icon = util.find_object_added_in_pr(new_icons, args.pr_title)
check_devicon_object(filtered_icon) check_devicon_object(filtered_icon)
print("Icon being checked:", filtered_icon, sep = "\n", end='\n\n') print("Icon being checked:", filtered_icon, sep = "\n", end='\n\n')