Add new icon attribute, add SVG support

main
DaAwesomeP 9 years ago
parent 5fa7da01c5
commit 4fbb767bcc

1
.gitignore vendored

@ -5,6 +5,7 @@ build/*
drivers/npm/node_modules
drivers/npm/npm-debug.log
package.json
node_modules/
npm-debug.log

@ -10,7 +10,7 @@ install:
- sudo apt-get update -y
- sudo apt-get install -y curl zip sudo -y --force-yes
- sudo apt-get clean
- npm install jsonlint jpm imagemin-cli -g
- npm install jsonlint jpm imagemin-cli svgo -g
- ln -s docker/node/package.json package.json && npm install
- mkdir phantomjs && curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar xvjC phantomjs && ln -s $WAPPALYZER_ROOT/phantomjs/phantomjs-*-linux-x86_64/bin/phantomjs bin/phantomjs
script: wappalyzer build

@ -15,10 +15,14 @@ echo "Prettifying apps.json..."
jsonlint -ist $'\t' $WAPPALYZER_ROOT/src/apps.json
echo "Compressing icons..."
echo "Compressing PNG icons..."
imagemin $WAPPALYZER_ROOT/src/icons $WAPPALYZER_ROOT/src/icons -o 3
echo "Compressing PNG icons..."
svgo -f $WAPPALYZER_ROOT/src/icons $WAPPALYZER_ROOT/src/icons
wappalyzer links
# Npm Module

@ -6,23 +6,45 @@ var
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 ) {
for (app in json.apps) {
(function(app) {
var path = process.env.WAPPALYZER_ROOT + '/src/icons/' + app + '.png';
var basePath = process.env.WAPPALYZER_ROOT + '/src/icons/';
var iconPath = json.apps[app].icon;
var path = basePath + iconPath;
fs.exists(path, function(exists) {
var buffer;
if ( exists ) {
buffer = fileType(readChunk.sync(path, 0, 262));
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;
}
if ( buffer.mime !== 'image/png' ) {
throw new Error('Incorrect mimetype "' + buffer.mime + '": src/icons/' + app + '.png');
}
fs.exists(path, function(exists) {
if (exists) {
if (type === "PNG") {
var buffer = fileType(readChunk.sync(path, 0, 262));
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 {
throw new Error('Missing file: src/icons/' + app + '.png');
var err = new Error('Missing file for app "' + app + '": src/icons/' + iconPath);
throw err;
}
});
}(app));

@ -32,7 +32,7 @@ RUN su wappalyzer -c "mkdir $WAPPALYZER_NODE_PATH"
ADD node/package.json $WAPPALYZER_NODE_PATH/package.json
RUN npm install jsonlint jpm imagemin-cli -g && su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm install"
RUN npm install jsonlint jpm imagemin-cli svgo -g && su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm install"
# PhantomJS

@ -1,6 +1,7 @@
{
"devDependencies": {
"file-type": "2.2.*",
"file-type": "3.1.*",
"is-svg": "1.1.*",
"read-chunk": "1.0.*"
}
}

@ -74,6 +74,10 @@
"website": {
"type": "string",
"required": true
},
"icon": {
"type": "string",
"required": true
}
}
}

File diff suppressed because it is too large Load Diff