mirror of
https://github.com/simple-icons/simple-icons.git
synced 2024-12-16 01:10:30 +02:00
7b69d16efb
* 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
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
#!/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);
|
|
}
|