diff --git a/.github/scripts/build_assets/filehandler.py b/.github/scripts/build_assets/filehandler.py index ee57f3f0..42c8cafa 100644 --- a/.github/scripts/build_assets/filehandler.py +++ b/.github/scripts/build_assets/filehandler.py @@ -9,8 +9,8 @@ import re def find_new_icons(devicon_json_path: str, icomoon_json_path: str) -> List[dict]: """ Find the newly added icons by finding the difference between - the devicon_test.json and the icomoon_test.json. - :param devicon_json_path, the path to the devicon_test.json. + the devicon.json and the icomoon.json. + :param devicon_json_path, the path to the devicon.json. :param icomoon_json_path: a path to the iconmoon.json. :return: a list of the new icons as JSON objects. """ @@ -33,8 +33,8 @@ def is_not_in_icomoon_json(icon, icomoon_json) -> bool: Checks whether the icon's name is not in the icomoon_json. :param icon: the icon object we are searching for. :param icomoon_json: the icomoon json object parsed from - icomoon_test.json. - :return: True if icon's name is not in the icomoon_test.json, else False. + icomoon.json. + :return: True if icon's name is not in the icomoon.json, else False. """ pattern = re.compile(f"^{icon['name']}-") @@ -46,7 +46,7 @@ def is_not_in_icomoon_json(icon, icomoon_json) -> bool: def get_svgs_paths(new_icons: List[dict], icons_folder_path: str) -> List[str]: """ - Get all the suitable svgs file path listed in the devicon_test.json. + Get all the suitable svgs file path listed in the devicon.json. :param new_icons, a list containing the info on the new icons. :param icons_folder_path, the path where the function can find the listed folders. @@ -66,6 +66,7 @@ def get_svgs_paths(new_icons: List[dict], icons_folder_path: str) -> List[str]: aliases = [] # create empty list of aliases if not provided in devicon.json for font_version in icon_info["versions"]["font"]: + # if it's an alias, we don't want to make it into an icon if is_alias(font_version, aliases): continue diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 91a0aad8..99e8a5ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,50 +2,227 @@
First of all, thanks for taking the time to contribute! This project can only grow and live by your countless contributions. To keep this project maintable we developed some guidelines for contributions.
-devicon.json
Each icon comes in different variations:
+ +Here is an overview of what you have to do to submit your icons to the repo.
+/fonts
devicon.json
to include the new icon new icon: {{logoName}} ({{versions}})
Each icon can come in different versions. So far, we have:
-This is not mandatory, an icon can only have one or two variations available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). +It is not mandatory to have 6 versions for each icon. An icon can only have one or two variations available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon.
-The plain and line variations (with or without wordmark) are designed to be available in the final icon font. So they need to stay as simple as possible (one color and ensure that the paths are united before to export to svg). You can use a service like compressor or SVG Editor in order to optimize the svg file. +The plain and line versions (with or without wordmark) are designed to be available in the final icon font. This means they need to stay as simple as possible (one color and ensure that the paths are united before to export to svg). You can use a service like compressor or SVG Editor in order to optimize the svg file.
-The original versions are only available in svg format, so they do not need to be as simple and they can contain numerous colors. +The original versions are only available in svg format, so they do not need to be as simple and can contain numerous colors.
-Some icons are really simple (like the apple one), so the original version can be used for the icon font. In this case, I'll add an alias so they can be found with the "original" or "plain" naming convention.
+Some icons are really simple (like the Apple one), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make only one of the version (either "original" or "plain"). You can then add an alias in the devicon.json
so they can be found with either the "original" or "plain" naming convention.
icons
folder.eps
file and as many .svg
files as versions available.eps
file contains all available versions of an icon. Each version is contained in a 128px by 128px artboard.svg
file contains one version of an icon in a 0 0 128 128
viewbox(icon name)-(original|plain|line)-(wordmark)
devicon.json
+ Before you open a PR into Devicon, you'd have to update the devicon.json
. This is essential for our build script to work and to document your work.
+
+ Here is the object that each of your logo must have: +
+ +
+
+ {
+ "name": string, // the official name of the technology. Must be lower case, no space or use the dash '-' character.
+ "tags": string[], // list of tags relating to the technology for search purpose
+ "versions": {
+ "svg": VersionString[], // list the svgs that you have
+ "font": VersionString[] // list the fonts acceptable versions that you have
+ },
+ "color": string, // the main color of the logo. Only track 1 color
+ "aliases": AliasObj[] // keeps track of the aliases
+ }
+
+
+
++ Here is the AliasObj interface: +
+
+
+ {
+ "base": VersionString, // the base version
+ "alias": VersionString // the alias version that's similar to the base version
+ }
+
+
+
++ Here is what VersionString means: +
++As an example, let's assume you have created the svgs for Amazon Web Services and Redhat logos. +
+For the Amazon Web Services svgs, you have the following versions: "original", "original-wordmark", "plain-wordmark". However, the "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.
+For the Redhat svg, you have the "original", "original-wordmark", "plain", "plain-wordmark" versions.
+/fonts
+ amazonwebservices
and one for redhat
devicon.json
to include the icon (or variations)
+ amazonwebservices
, you would do this
+
+
+ {
+ "name": "amazonwebservices",
+ "tags": [
+ "cloud",
+ "hosting",
+ "server"
+ ],
+ "versions": {
+ "svg": [ // here are the versions that are available in svgs
+ "original",
+ "original-wordmark",
+ "plain-wordmark"
+ ],
+ "font": [ // here are the versions that are available as font icons
+ "original", // original is simple enough to be used as plain
+ "plain-wordmark"
+ ]
+ },
+ "color": "#F7A80D", // note the '#' character
+ "aliases": [
+ {
+ "base": "original", // here is the base version aka the one that we will upload to Icomoon
+ "alias": "plain" // this is its alias. Our script will create a reference so we can search using "original" or "plain"
+ }
+ ]
+ }
+
+
+ redhat
, you would do this
+
+
+ {
+ "name": "redhat",
+ "tags": [
+ "server",
+ "linux"
+ ],
+ "versions": {
+ "svg": [
+ "original",
+ "original-wordmark",
+ "plain",
+ "plain-wordmark"
+ ],
+ "font": [
+ "plain",
+ "plain-wordmark"
+ ]
+ },
+ "color": "#e93442",
+ "aliases": [] // no aliases
+ },
+
+
+ When you want to request a new icon please feel free to create a issue following some simple guidelines:
To make adding icons easier for repo maintainers, we rely on GitHub Actions, Python, Selenium, and Gulp to automate our tasks.
+So far, the tasks that we have automated are:
+