1
0
mirror of https://github.com/simple-icons/simple-icons.git synced 2024-12-16 01:10:30 +02:00

Add CI step for ensuring alphabetical order of icons (#2334)

* Add a script for the linting that cannot be accomplished by our other linters

Currently this only contains linting for whether our icons are alphabetically sorted

* Add our own linting to Travis

* Fix Let's Encrypt being incorrectly sorted

* Intentionally break sorting to test CI

* Revert "Intentionally break sorting to test CI"

This reverts commit 55e4070b3c.

* Explain in CONTRIBUTION.md how to sort metadata
This commit is contained in:
Johan Fagerberg 2020-01-16 11:40:46 +01:00 committed by Eric Cornelissen
parent 21b01b56d7
commit 7b69d16efb
5 changed files with 52 additions and 5 deletions

View File

@ -8,6 +8,7 @@ jobs:
- npm run jsonlint
- npm run svglint
- npm run wslint
- npm run our-lint
- name: "Build website"
language: ruby
rvm: 2.4.1

View File

@ -145,6 +145,8 @@ Here is the object for The Movie Database as an example:
}
```
Make sure the icon is added in alphabetical order. If you're in doubt, you can always run `npm run our-lint` - this will tell you if any of the JSON data is in the wrong order.
### 7. Create a pull request
Once you've completed the previous steps, create a pull request to merge your edits into the *develop* branch.

View File

@ -2495,16 +2495,16 @@
"hex": "E2231A",
"source": "https://www.lenovopartnernetwork.com/us/branding/"
},
{
"title": "Letterboxd",
"hex": "00D735",
"source": "https://letterboxd.com/about/logos/"
},
{
"title": "Let’s Encrypt",
"hex": "003A70",
"source": "https://letsencrypt.org/trademarks/"
},
{
"title": "Letterboxd",
"hex": "00D735",
"source": "https://letterboxd.com/about/logos/"
},
{
"title": "LGTM",
"hex": "FFFFFF",

View File

@ -28,6 +28,7 @@
"scripts": {
"build": "node scripts/build-package.js",
"clean": "rm icons/*.js index.js",
"our-lint": "node scripts/lint.js",
"jsonlint": "jsonlint _data/simple-icons.json -q -V .jsonlintschema",
"svglint": "svglint icons/* --ci",
"wslint": "editorconfig-checker -exclude *.svg",

43
scripts/lint.js Normal file
View File

@ -0,0 +1,43 @@
#!/usr/bin/env node
/**
* @fileoverview Lints for the package that can't be implemented in the existing linters (e.g. jsonlint/svglint)
*/
const { icons } = require("../_data/simple-icons.json");
/**
* Contains our tests so they can be isolated from eachother; I don't think each test is worth its own file
* @type {{[k:string]: () => (string|undefined)}}
*/
const TESTS = {
/** Tests whether our icons are in alphabetical order */
alphabetical: function() {
const collector = (invalidEntries, icon, index, array) => {
if (index > 0) {
const prev = array[index - 1];
if (icon.title.localeCompare(prev.title) < 0) {
invalidEntries.push(icon);
}
}
return invalidEntries;
};
const invalids = icons.reduce(collector, []);
if (invalids.length) {
return `Some icons aren't in alphabetical order:
${invalids.map(icon => icon.title).join(", ")}`;
}
}
};
// execute all tests and log potential errors
const errors = Object.keys(TESTS)
.map(k => TESTS[k]())
.filter(Boolean);
if (errors.length) {
errors.forEach(error => {
console.error(`\u001b[31m${error}\u001b[0m`);
});
process.exit(1);
}