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
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
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())
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.
:param icons, a list of the font objects found in the devicon.json.

View File

@ -20,31 +20,31 @@ def main():
runner = None
try:
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:
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("Begin optimizing files")
optimize_svgs(new_icons, args.icons_folder_path)
# print("Begin optimizing files")
# optimize_svgs(new_icons, args.icons_folder_path)
print("Updating the icomoon json")
update_icomoon_json(new_icons, args.icomoon_json_path)
# print("Updating the icomoon json")
# update_icomoon_json(new_icons, args.icomoon_json_path)
icon_svgs = filehandler.get_svgs_paths(
new_icons, args.icons_folder_path, icon_versions_only=True)
runner = SeleniumRunner(args.download_path,
args.geckodriver_path, args.headless)
runner.upload_icomoon(args.icomoon_json_path)
runner.upload_svgs(icon_svgs)
# icon_svgs = filehandler.get_svgs_paths(
# new_icons, args.icons_folder_path, icon_versions_only=True)
# runner = SeleniumRunner(args.download_path,
# args.geckodriver_path, args.headless)
# runner.upload_icomoon(args.icomoon_json_path)
# runner.upload_svgs(icon_svgs)
zip_name = "devicon-v1.0.zip"
zip_path = Path(args.download_path, zip_name)
runner.download_icomoon_fonts(zip_path)
filehandler.extract_files(str(zip_path), args.download_path)
filehandler.rename_extracted_files(args.download_path)
print("Task completed.")
# zip_name = "devicon-v1.0.zip"
# zip_path = Path(args.download_path, zip_name)
# runner.download_icomoon_fonts(zip_path)
# filehandler.extract_files(str(zip_path), args.download_path)
# filehandler.rename_extracted_files(args.download_path)
# print("Task completed.")
except TimeoutException as e:
util.exit_with_err("Selenium Time Out Error: \n" + str(e))
except Exception as e:
@ -54,21 +54,31 @@ def main():
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.
:param icomoon_json_path - the path to the `icomoon.json`.
:param devicon_json_path - the path to the `devicon.json`.
: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)
new_icons = []
for pull_req in pull_reqs:
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:
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

View File

@ -17,7 +17,7 @@ def main():
new_icons = filehandler.get_json_file_content(args.devicon_json_path)
# 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)
print("Icon being checked:", filtered_icon, sep = "\n", end='\n\n')