Skip to content

Commit

Permalink
Merge pull request #386 from devicons/develop
Browse files Browse the repository at this point in the history
Release master with fixed build process
  • Loading branch information
amacado authored Dec 12, 2020
2 parents 0e56598 + dcd0861 commit ca887b2
Show file tree
Hide file tree
Showing 10 changed files with 158 additions and 187 deletions.
23 changes: 13 additions & 10 deletions .github/scripts/build_assets/SeleniumRunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,12 @@ def set_options(self, download_path: str, geckodriver_path: str,
self.driver = WebDriver(options=options, executable_path=geckodriver_path)
self.driver.get(self.ICOMOON_URL)
assert "IcoMoon App" in self.driver.title

# wait until the whole web page is loaded by testing the hamburger input
hamburger_input = WebDriverWait(self.driver, SeleniumRunner.LONG_WAIT_IN_SEC).until(
ec.element_to_be_clickable((By.CSS_SELECTOR,
"button.btn5.lh-def.transparent i.icon-menu"))
WebDriverWait(self.driver, self.LONG_WAIT_IN_SEC).until(
ec.element_to_be_clickable((By.XPATH, "(//i[@class='icon-menu'])[2]"))
)
hamburger_input.click()
print("Accessed icomoon.io")


def upload_icomoon(self, icomoon_json_path: str):
"""
Expand All @@ -92,11 +90,16 @@ def upload_icomoon(self, icomoon_json_path: str):
"""
print("Uploading icomoon.json file...")
try:
self.click_hamburger_input()

# find the file input and enter the file path
import_btn = WebDriverWait(self.driver, SeleniumRunner.LONG_WAIT_IN_SEC).until(
ec.element_to_be_clickable((By.CSS_SELECTOR, "div#file input"))
)
import_btn = self.driver.find_element(By.XPATH, "(//li[@class='file'])[1]//input")
import_btn.send_keys(icomoon_json_path)
except SeleniumTimeoutException as e:
print(e.stacktrace)
print("Selenium timed out. Couldn't find import button.")
self.close()
raise e
except Exception as e:
self.close()
raise e
Expand Down Expand Up @@ -159,8 +162,8 @@ def click_hamburger_input(self):
:return: None.
"""
try:
hamburger_input = self.driver.find_element_by_css_selector(
"button.btn5.lh-def.transparent i.icon-menu"
hamburger_input = self.driver.find_element_by_xpath(
"(//i[@class='icon-menu'])[2]"
)

menu_appear_callback = ec.element_to_be_clickable(
Expand Down
33 changes: 33 additions & 0 deletions .github/scripts/build_assets/util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from pathlib import Path
from argparse import ArgumentParser
from build_assets.PathResolverAction import PathResolverAction

def get_commandline_args():
parser = ArgumentParser(description="Upload svgs to Icomoon to create icon files.")

parser.add_argument("--headless",
help="Whether to run the browser in headless/no UI mode",
action="store_true")

parser.add_argument("geckodriver_path",
help="The path to the firefox executable file",
action=PathResolverAction)

parser.add_argument("icomoon_json_path",
help="The path to the icomoon.json aka the selection.json created by Icomoon",
action=PathResolverAction)

parser.add_argument("devicon_json_path",
help="The path to the devicon.json",
action=PathResolverAction)

parser.add_argument("icons_folder_path",
help="The path to the icons folder",
action=PathResolverAction)

parser.add_argument("download_path",
help="The path where you'd like to download the Icomoon files to",
action=PathResolverAction)


return parser.parse_args()
42 changes: 42 additions & 0 deletions .github/scripts/icomoon_build.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from pathlib import Path
from selenium.common.exceptions import TimeoutException

# pycharm complains that build_assets is an unresolved ref
# don't worry about it, the script still runs
from build_assets.SeleniumRunner import SeleniumRunner
from build_assets import filehandler, util


def main():
args = util.get_commandline_args()
new_icons = filehandler.find_new_icons(args.devicon_json_path, args.icomoon_json_path)
if len(new_icons) == 0:
print("No files need to be uploaded. Ending script...")
return

# print list of new icons
print("List of new icons:", *new_icons, sep = "\n")

runner = None
try:
runner = SeleniumRunner(args.download_path,
args.geckodriver_path, args.headless)
runner.upload_icomoon(args.icomoon_json_path)
svgs = filehandler.get_svgs_paths(new_icons, args.icons_folder_path)
runner.upload_svgs(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.")
except TimeoutException as e:
print(e)
print(e.stacktrace)
finally:
runner.close()


if __name__ == "__main__":
main()
48 changes: 9 additions & 39 deletions .github/scripts/icomoon_peek.py
Original file line number Diff line number Diff line change
@@ -1,61 +1,31 @@
from pathlib import Path
from argparse import ArgumentParser
from selenium.common.exceptions import TimeoutException

# pycharm complains that build_assets is an unresolved ref
# don't worry about it, the script still runs
from build_assets.SeleniumRunner import SeleniumRunner
from build_assets import filehandler
from build_assets.PathResolverAction import PathResolverAction
from build_assets import filehandler, util


def main():
parser = ArgumentParser(description="Upload svgs to Icomoon to create icon files.")

parser.add_argument("--headless",
help="Whether to run the browser in headless/no UI mode",
action="store_true")

parser.add_argument("geckodriver_path",
help="The path to the firefox executable file",
action=PathResolverAction)

parser.add_argument("icomoon_json_path",
help="The path to the icomoon.json aka the selection.json created by Icomoon",
action=PathResolverAction)

parser.add_argument("devicon_json_path",
help="The path to the devicon.json",
action=PathResolverAction)

parser.add_argument("icons_folder_path",
help="The path to the icons folder",
action=PathResolverAction)

parser.add_argument("download_path",
help="The path where you'd like to download the Icomoon files to",
action=PathResolverAction)

args = parser.parse_args()

args = util.get_commandline_args()
new_icons = filehandler.find_new_icons(args.devicon_json_path, args.icomoon_json_path)
if len(new_icons) == 0:
print("No files need to be peek. Ending script...")
print("No files need to be uploaded. Ending script...")
return

# print list of new icons, separated by comma
print("List of new icons:")
print(*new_icons, sep = "\n")
# print list of new icons
print("List of new icons:", *new_icons, sep = "\n")

runner = None
try:
runner = SeleniumRunner(args.download_path,
args.geckodriver_path, args.headless)
runner = SeleniumRunner(args.download_path, args.geckodriver_path, args.headless)
svgs = filehandler.get_svgs_paths(new_icons, args.icons_folder_path)
runner.upload_svgs(svgs)
runner.close()
print("Task completed.")
except TimeoutException as e:
print(e)
print(e.stacktrace)
finally:
runner.close()


Expand Down
71 changes: 0 additions & 71 deletions .github/scripts/icomoon_upload.py

This file was deleted.

9 changes: 3 additions & 6 deletions .github/workflows/build_icons.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,8 @@ jobs:
python -m pip install --upgrade pip
pip install -r ./.github/scripts/requirements.txt
npm install
- name: Run icomoon_upload.py
run: >
python ./.github/scripts/icomoon_upload.py
./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe
./icomoon.json ./devicon.json ./icons ./ --headless
- name: Executing build and create fonts via icomoon
run: npm run build
- name: Upload geckodriver.log for debugging purposes
uses: actions/upload-artifact@v2
if: ${{failure()}}
Expand All @@ -35,7 +32,7 @@ jobs:
with:
name: new_icons
path: ./new_icons.png
- name: Running npm task for building devicon.min.css
- name: Build devicon.min.css
if: ${{ success() }}
run: npm run build-css
- name: Create Pull Request
Expand Down
8 changes: 2 additions & 6 deletions .github/workflows/peek_icons.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,12 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies (python, pip, npm)
- name: Install dependencies (python, pip)
run: |
python -m pip install --upgrade pip
pip install -r ./.github/scripts/requirements.txt
npm install
- name: Run icomoon_peek.py
run: >
python ./.github/scripts/icomoon_peek.py
./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe
./icomoon.json ./devicon.json ./icons ./ --headless
run: npm run peek
- name: Upload geckodriver.log for debugging purposes
uses: actions/upload-artifact@v2
if: ${{failure()}}
Expand Down
Loading

0 comments on commit ca887b2

Please sign in to comment.