mit-license/test.js
Remy Sharp d5636b1004 feat: move to vanilla js + (my) lints
Largly just a code reorg taking all of @Richienb's work and splitting it
into separate files.
2019-06-19 18:10:40 +01:00

60 lines
1.5 KiB
JavaScript

#!/bin/env node
const path = require('path');
const fs = require('fs');
const CSS = require('css');
let errored = false;
const users = fs.readdirSync('users');
users.forEach(async user => {
if (user.endsWith('json')) {
if (encodeURIComponent(user) === user) {
fs.readFile(path.join('users', user), 'utf8', async (err, content) => {
if (err) {
errored = true;
console.error(`Unable to read ${user}`);
} else {
try {
const u = JSON.parse(content);
if (!u.locked && !u.copyright) {
errored = true;
console.error(`Copyright not specified in ${user} (${e})`);
}
} catch (e) {
errored = true;
console.error(`Invalid JSON in ${user} (${e})`);
}
}
});
} else {
errored = true;
console.error(`${user} is not URL safe`);
}
} else {
errored = true;
console.error(`${user} is not a json file`);
}
});
const themes = fs.readdirSync('themes');
themes.forEach(async theme => {
if (theme.endsWith('css')) {
fs.readFile(path.join('themes', theme), 'utf8', async (err, content) => {
if (err) {
errored = true;
console.error(`Unable to read ${theme}`);
} else {
try {
CSS.parse(content);
} catch (e) {
errored = true;
console.error(`Invalid CSS in ${theme} (${e})`);
}
}
});
}
});
setTimeout(() => {
if (errored) process.exit(1);
}, 500);