You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
#!/usr/bin/env node
|
|
|
|
var
|
|
app,
|
|
modulesPath = process.env.WAPPALYZER_NODE_PATH !== undefined ? process.env.WAPPALYZER_NODE_PATH + '/node_modules/' : '',
|
|
fs = require('fs'),
|
|
fileType = require(modulesPath + 'file-type'),
|
|
readChunk = require(modulesPath + 'read-chunk')
|
|
isSvg = require(modulesPath + 'is-svg')
|
|
json = require(process.env.WAPPALYZER_ROOT + '/src/apps.json');
|
|
|
|
for (app in json.apps) {
|
|
(function(app) {
|
|
var basePath = process.env.WAPPALYZER_ROOT + '/src/icons/';
|
|
var iconPath = json.apps[app].icon || 'default.svg';
|
|
var path = basePath + iconPath;
|
|
|
|
var type;
|
|
if (path.substr(path.length - 4) === '.png') {
|
|
type = "PNG";
|
|
}
|
|
else if (path.substr(path.length - 4) === '.svg') {
|
|
type = "SVG";
|
|
}
|
|
else {
|
|
var err = new Error('Icon file extension specified for app "' + app + '" is not ".png" or ".svg": src/icons/' + iconPath);
|
|
throw err;
|
|
}
|
|
|
|
fs.exists(path, function(exists) {
|
|
if (exists) {
|
|
if (type === "PNG") {
|
|
var buffer = fileType(readChunk.sync(path, 0, 262));
|
|
if (buffer === null) {
|
|
var err = new Error('Unknown mimetype or bad file for "' + app + '": src/icons/' + iconPath);
|
|
throw err;
|
|
}
|
|
else if (buffer.mime !== 'image/png') {
|
|
var err = new Error('Incorrect mimetype "' + buffer.mime + '" when expected PNG for app "' + app + '": src/icons/' + iconPath);
|
|
throw err;
|
|
}
|
|
}
|
|
else if (type === "SVG") {
|
|
if (!isSvg(fs.readFileSync(path))) {
|
|
var err = new Error('Incorrect mimetype when expected SVG for app "' + app + '": src/icons/' + iconPath);
|
|
throw err;
|
|
}
|
|
}
|
|
} else {
|
|
var err = new Error('Missing file for app "' + app + '": src/icons/' + iconPath);
|
|
throw err;
|
|
}
|
|
});
|
|
}(app));
|
|
};
|