Comparing version 0.0.1 to 0.0.2
var Q = require('q'), | ||
info = JSON.parse(require('fs').readFileSync(__dirname + '/../package.json')); | ||
module.exports = require('coa').Cmd() | ||
var coa = module.exports = require('coa').Cmd() | ||
.helpful() | ||
@@ -20,4 +20,23 @@ .name(info.name) | ||
.short('c').long('config') | ||
.val(function(val) { | ||
return val || coa.reject('Option --config must have a value.'); | ||
}) | ||
.end() | ||
.opt() | ||
.name('disable').title('Disable plugin') | ||
.short('d').long('disable') | ||
.arr() | ||
.val(function(val) { | ||
return val || coa.reject('Option --disable must have a value.'); | ||
}) | ||
.end() | ||
.opt() | ||
.name('enable').title('Enable plugin') | ||
.short('e').long('enable') | ||
.arr() | ||
.val(function(val) { | ||
return val || coa.reject('Option --enable must have a value.'); | ||
}) | ||
.end() | ||
.opt() | ||
.name('input').title('Input file (default: stdin)') | ||
@@ -49,3 +68,3 @@ .short('i').long('input') | ||
.then(function(svg) { | ||
return SVGO(svg, options); | ||
return SVGO(svg, { coa: options }); | ||
}) | ||
@@ -52,0 +71,0 @@ .then(function(svgmin) { |
@@ -9,36 +9,59 @@ var QFS = require('q-fs'), | ||
if (!options || !options.config) return readConfig(defaultConfigPath); | ||
// if there are no any options then return default config | ||
if (!options) return readConfig(defaultConfigPath); | ||
return readConfig(defaultConfigPath) | ||
.then(function(defaultConfig) { | ||
// COA options | ||
if (options.coa) { | ||
if (typeof options.config === 'string') { | ||
options = options.coa; | ||
var localConfigPath = PATH.resolve(process.cwd, options.config); | ||
return readConfig(defaultConfigPath) | ||
.then(function(defaultConfig) { | ||
return QFS.exists(localConfigPath) | ||
.then(function(exists) { | ||
// --disable | ||
if (options.disable) return pluginsFromCOA(defaultConfig, options.disable, false); | ||
if (!exists) return defaultConfig; | ||
// --enable | ||
if (options.enable) return pluginsFromCOA(defaultConfig, options.enable, true); | ||
return readConfig(localConfigPath) | ||
.then(function(localConfig) { | ||
return extend(true, defaultConfig, localConfig); | ||
}); | ||
// --config | ||
if (options.config) { | ||
}); | ||
var localConfigPath = PATH.resolve(process.cwd, options.config); | ||
} else if (Object.prototype.toString.call(options.config) === '[object Object]') { | ||
// check for the local config file | ||
return QFS.exists(localConfigPath) | ||
.then(function(exist) { | ||
return extend(true, defaultConfig, options.config); | ||
// if it doesn't exists then return default | ||
if (!exist) return defaultConfig; | ||
} else { | ||
// console.log(exists); | ||
// TODO: ... | ||
throw new Error('...'); | ||
// if it exists then return extended default | ||
return readConfig(localConfigPath) | ||
.then(function(localConfig) { | ||
return extend(true, defaultConfig, localConfig); | ||
}); | ||
} | ||
}); | ||
} | ||
}); | ||
return defaultConfig; | ||
}); | ||
// inline {} options | ||
} else { | ||
// return extended default | ||
return readConfig(defaultConfigPath) | ||
.then(function(defaultConfig) { | ||
return extend(true, defaultConfig, options); | ||
}); | ||
} | ||
}; | ||
@@ -54,1 +77,19 @@ | ||
}; | ||
function pluginsFromCOA(defaultConfig, names, active) { | ||
var plugins = defaultConfig.plugins; | ||
for (var type in plugins) { | ||
plugins[type].forEach(function(plugin) { | ||
names.forEach(function(name) { | ||
if (plugin.name === name) { | ||
plugin.active = active; | ||
} | ||
}); | ||
}); | ||
}; | ||
return defaultConfig; | ||
}; |
@@ -80,4 +80,2 @@ /** | ||
exports.inspect = require('eyes').inspector({ maxLength: 99999 }); | ||
exports.flatten = function(array) { | ||
@@ -84,0 +82,0 @@ var result = [], |
{ | ||
"name": "svgo", | ||
"version": "0.0.1", | ||
"description": "SVG Optimizer", | ||
"version": "0.0.2", | ||
"description": "Nodejs-based tool for optimizing SVG vector graphics files", | ||
"keywords": ["svgo", "svg", "optimize", "minify"], | ||
"homepage": " ", | ||
"homepage": "http://deepsweet.github.com/svgo", | ||
"bugs": { | ||
@@ -13,2 +13,3 @@ "url": "https://github.com/deepsweet/svgo/issues", | ||
"contributors": [ | ||
"Sergey Belov <peimei@ya.ru> (http://github.com/arikon)" | ||
], | ||
@@ -32,14 +33,21 @@ "repository": { | ||
"dependencies": { | ||
"inherit": "*", | ||
"q": "0.8", | ||
"sax": "0.4.x", | ||
"q": "0.8.x", | ||
"q-fs": "", | ||
"coa": "0.3.x", | ||
"sax": "0.4.x", | ||
"inherit": "" | ||
}, | ||
"devDependencies": { | ||
"mocha": "1.4.x", | ||
"should": "", | ||
"eyes": "" | ||
"should": "" | ||
}, | ||
"engines": { | ||
"node": ">=0.4.0" | ||
} | ||
"node": ">=0.6.0" | ||
}, | ||
"licenses": [ | ||
{ | ||
"type": "MIT", | ||
"url": "https://raw.github.com/deepsweet/svgo/master/LICENSE" | ||
} | ||
] | ||
} |
@@ -23,17 +23,17 @@ ``` | ||
* [ [>](svgo/tree/master/plugins/cleanupAttrs.js) ] cleanup attributes from newlines, trailing and repeating spaces | ||
* [ [>](svgo/tree/master/plugins/removeDoctype.js) ] remove doctype declaration | ||
* [ [>](svgo/tree/master/plugins/removeXMLProcInst.js) ] remove XML processing instructions | ||
* [ [>](svgo/tree/master/plugins/removeComments.js) ] remove comments | ||
* [ [>](svgo/tree/master/plugins/removeMetadata.js) ] remove metadata | ||
* [ [>](svgo/tree/master/plugins/removeEditorsNSData.js) ] remove editors namespaces, elements and attributes | ||
* [ [>](svgo/tree/master/plugins/removeEmptyAttrs.js) ] remove empty attributes | ||
* [ [>](svgo/tree/master/plugins/removeDefaultPx.js) ] remove default "px" unit | ||
* [ [>](svgo/tree/master/plugins/removeHiddenElems.js) ] remove a lot of hidden elements | ||
* [ [>](svgo/tree/master/plugins/removeEmptyText.js) ] remove empty Text elements | ||
* [ [>](svgo/tree/master/plugins/removeEmptyContainers.js) ] remove empty Container elements | ||
* [ [>](svgo/tree/master/plugins/convertStyleToAttrs.js) ] convert styles into attributes | ||
* [ [>](svgo/tree/master/plugins/convertColors.js) ] convert colors | ||
* [ [>](svgo/tree/master/plugins/moveElemsAttrsToGroup.js) ] move elements attributes to the existing group wrapper | ||
* [ [>](svgo/tree/master/plugins/collapseGroups.js) ] collapse groups | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/cleanupAttrs.js) ] cleanup attributes from newlines, trailing and repeating spaces | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeDoctype.js) ] remove doctype declaration | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeXMLProcInst.js) ] remove XML processing instructions | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeComments.js) ] remove comments | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeMetadata.js) ] remove metadata | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeEditorsNSData.js) ] remove editors namespaces, elements and attributes | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeEmptyAttrs.js) ] remove empty attributes | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeDefaultPx.js) ] remove default "px" unit | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeHiddenElems.js) ] remove a lot of hidden elements | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeEmptyText.js) ] remove empty Text elements | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/removeEmptyContainers.js) ] remove empty Container elements | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/convertStyleToAttrs.js) ] convert styles into attributes | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/convertColors.js) ] convert colors | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/moveElemsAttrsToGroup.js) ] move elements attributes to the existing group wrapper | ||
* [ [>](//github.com/deepsweet/svgo/blob/master/plugins/collapseGroups.js) ] collapse groups | ||
@@ -60,2 +60,4 @@ But it's not only about rude removing, SVG has a strict [specification](http://www.w3.org/TR/SVG/expanded-toc.html) with a lot of opportunities for optimizations, default values, geometry hacking and more. | ||
-c CONFIG, --config=CONFIG : Local config | ||
-d DISABLE, --disable=DISABLE : Disable plugin | ||
-e ENABLE, --enable=ENABLE : Enable plugin | ||
-i INPUT, --input=INPUT : Input file (default: stdin) | ||
@@ -66,4 +68,7 @@ -o OUTPUT, --output=OUTPUT : Output file (default: stdout) | ||
``` | ||
svgo -i myTestFile.svg -o myTestFile.min.svg | ||
svgo -i test.svg -o test.min.svg | ||
``` | ||
``` | ||
cat test.svg | svgo -d removeDoctype -d removeComment > test.min.svg | ||
``` | ||
@@ -70,0 +75,0 @@ ## TODO |
@@ -49,9 +49,7 @@ var should = require('should'), | ||
var myConfig = { | ||
config: { | ||
plugins: { | ||
directPass: [ | ||
{ name: 'removeDoctype', active: false }, | ||
{ name: 'myTestPlugin', active: true } | ||
] | ||
} | ||
plugins: { | ||
directPass: [ | ||
{ name: 'removeDoctype', active: false }, | ||
{ name: 'myTestPlugin', active: true } | ||
] | ||
} | ||
@@ -87,3 +85,5 @@ }, | ||
var myConfig = { | ||
config: './test/config.cfg' | ||
coa: { | ||
config: './test/config.cfg' | ||
} | ||
}, | ||
@@ -93,2 +93,4 @@ result; | ||
before(function(done) { | ||
// console.log(config(myConfig)); | ||
config(myConfig).then(function(data) { | ||
@@ -95,0 +97,0 @@ result = data; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Wildcard dependency
QualityPackage has a dependency with a floating version range. This can cause issues if the dependency publishes a new major version.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Wildcard dependency
QualityPackage has a dependency with a floating version range. This can cause issues if the dependency publishes a new major version.
Found 3 instances in 1 package
82347
5
36
2267
2
79
2
2
- Removedeyes@
- Removedmocha@1.4.x
- Removedshould@
- Removedcommander@0.6.1(transitive)
- Removeddebug@4.3.7(transitive)
- Removeddiff@1.0.2(transitive)
- Removedeyes@0.1.8(transitive)
- Removedgrowl@1.5.1(transitive)
- Removedjade@0.26.3(transitive)
- Removedmkdirp@0.3.00.3.3(transitive)
- Removedmocha@1.4.3(transitive)
- Removedms@0.3.02.1.3(transitive)
- Removedshould@13.2.3(transitive)
- Removedshould-equal@2.0.0(transitive)
- Removedshould-format@3.0.3(transitive)
- Removedshould-type@1.4.0(transitive)
- Removedshould-type-adaptors@1.1.0(transitive)
- Removedshould-util@1.0.1(transitive)
Updatedinherit@
Updatedq@0.8.x