Comparing version 0.1.4 to 0.2.0
118
cli.js
#!/usr/bin/env node | ||
'use strict'; | ||
var fs = require('fs'); | ||
var nopt = require('nopt'); | ||
var chalk = require('chalk'); | ||
var sudoBlock = require('sudo-block'); | ||
var _ = require('lodash'); | ||
var pageres = require('./index'); | ||
@@ -12,69 +13,90 @@ | ||
console.log(''); | ||
console.log('Specify urls and screen resolutions as arguments. Order doesn\'t matter.'); | ||
console.log(''); | ||
console.log(chalk.underline('Usage')); | ||
console.log(' pageres <url> [<url> ...] --sizes <resolution>,[<resolution>,...]'); | ||
console.log(' pageres <url> [<url> ...] --file <filepath>'); | ||
console.log(' pageres <url> <resolution> [<resolution> <url> ...]'); | ||
console.log(' pageres [<url> <resolution> ...] < <file>'); | ||
console.log(' cat <file> | pageres [<url> <resolution> ...]'); | ||
console.log(''); | ||
console.log(chalk.underline('Example')); | ||
console.log(' pageres todomvc.com yeoman.io --sizes 1366x768,1600x900'); | ||
console.log(' pageres todomvc.com yeoman.io 1366x768 1600x900'); | ||
console.log(' pageres 1366x768 < urls.txt'); | ||
console.log(' cat screen-resolutions.txt | pageres todomvc.com yeoman.io'); | ||
console.log(''); | ||
console.log('If --sizes is not specified it will fall back to the ten most popular screen resolutions according to w3counter.'); | ||
console.log(''); | ||
console.log('The <filepath> file should be formatted to have one <resolution> on each line.'); | ||
console.log('You can also pipe in a newline separated list of urls and screen resolutions which will get merged with the arguments.'); | ||
console.log('If no screen resolutions are specified it will fall back to the ten most popular ones according to w3counter.'); | ||
} | ||
var opts = nopt({ | ||
help: Boolean, | ||
version: Boolean, | ||
sizes: String, | ||
file: String | ||
}, { | ||
h: '--help', | ||
v: '--version', | ||
s: '--sizes', | ||
f: '--file' | ||
}); | ||
function getStdin(cb) { | ||
var ret = ''; | ||
var urls = opts.argv.remain; | ||
var sizes = opts.sizes && opts.sizes.split(','); | ||
process.stdin.resume(); | ||
process.stdin.setEncoding('utf8'); | ||
//TODO: keep me up to date: http://www.w3counter.com/globalstats.php | ||
var defRes = '1366x768,1024x768,1280x800,1920x1080,1440x900,768x1024,1280x1024,1600x900,320x480,320x568'; | ||
process.stdin.on('data', function (data) { | ||
ret += data; | ||
}); | ||
if (opts.help || urls.length === 0) { | ||
return showHelp(); | ||
process.stdin.on('end', function () { | ||
cb(ret); | ||
}); | ||
} | ||
if (opts.version) { | ||
return console.log(require('./package').version); | ||
} | ||
function init(args) { | ||
if (opts.help) { | ||
return showHelp(); | ||
} | ||
if (urls.length === 0) { | ||
console.error(chalk.yellow('Specify at least one url')); | ||
return showHelp(); | ||
} | ||
if (opts.version) { | ||
return console.log(require('./package').version); | ||
} | ||
if (!sizes) { | ||
if (opts.file) { | ||
sizes = fs.readFileSync(opts.file, 'utf8').trim().split('\n'); | ||
} else { | ||
console.log('Neither ' + chalk.underline('--sizes') + ' nor ' + chalk.underline('--file') + ' specified. Falling back to the ten most popular screen resolutions according to w3counter as of January 2014:\n' + defRes); | ||
var urls = _.uniq(args.filter(/./.test.bind(/\./))); | ||
var sizes = _.uniq(args.filter(/./.test.bind(/^\d{3,4}x\d{3,4}$/i))) | ||
if (urls.length === 0) { | ||
console.error(chalk.yellow('Specify at least one url')); | ||
return showHelp(); | ||
} | ||
if (sizes.length === 0) { | ||
console.log('No sizes specified. Falling back to the ten most popular screen resolutions according to w3counter as of January 2014:\n' + defRes); | ||
sizes = defRes.split(','); | ||
} | ||
} | ||
// detect if the user inputed the sizes wrong. good UX ftw. | ||
if (urls.some(function (el) { return /^\d{3,4}x\d{3,4}$/.test(el) })) { | ||
console.log(chalk.yellow('The --sizes needs to be comma separated, not space ;)')); | ||
return showHelp(); | ||
pageres(urls, sizes, function (err) { | ||
if (err) { | ||
throw new Error(chalk.red('â ' + err.message)); | ||
} | ||
var u = urls.length; | ||
var s = sizes.length; | ||
console.log(chalk.green('\nâ Successfully generated %d screenshots from %d %s and %d %s'), u * s, u, (u === 1 ? 'url' : 'urls'), s, (s === 1 ? 'resolution': 'resolutions')); | ||
}); | ||
} | ||
pageres(urls, sizes, function (err) { | ||
if (err) { | ||
throw new Error(chalk.red('â ' + err.message)); | ||
} | ||
var u = urls.length; | ||
var s = sizes.length; | ||
sudoBlock(); | ||
console.log(chalk.green('\nâ Successfully generated %d screenshots from %d %s and %d %s'), u * s, u, (u === 1 ? 'url' : 'urls'), s, (s === 1 ? 'resolution': 'resolutions')); | ||
var opts = nopt({ | ||
help: Boolean, | ||
version: Boolean | ||
}, { | ||
h: '--help', | ||
v: '--version' | ||
}); | ||
var args = opts.argv.remain; | ||
//TODO: keep me up to date: http://www.w3counter.com/globalstats.php | ||
var defRes = '1366x768 1024x768 1280x800 1920x1080 1440x900 768x1024 1280x1024 1600x900 320x480 320x568'; | ||
if (process.stdin.isTTY) { | ||
init(args); | ||
} else { | ||
getStdin(function (data) { | ||
[].push.apply(args, data.trim().split('\n')); | ||
init(args); | ||
}); | ||
} |
{ | ||
"name": "pageres", | ||
"version": "0.1.4", | ||
"version": "0.2.0", | ||
"description": "Get screenshots of websites in different resolutions", | ||
@@ -43,3 +43,5 @@ "license": "MIT", | ||
"webshot": "~0.10.0", | ||
"slugify-url": "~1.0.1" | ||
"slugify-url": "~1.0.1", | ||
"sudo-block": "~0.3.0", | ||
"lodash": "~2.4.1" | ||
}, | ||
@@ -46,0 +48,0 @@ "devDependencies": { |
@@ -29,12 +29,16 @@ # pageres [![Build Status](https://travis-ci.org/sindresorhus/pageres.png?branch=master)](https://travis-ci.org/sindresorhus/pageres) | ||
Specify urls and screen resolutions as arguments. Order doesn't matter. | ||
Usage | ||
pageres <url> [<url> ...] --sizes <resolution>,[<resolution>,...] | ||
pageres <url> [<url> ...] --file <filepath> | ||
pageres <url> <resolution> [<resolution> <url> ...] | ||
pageres [<url> <resolution> ...] < <file> | ||
cat <file> | pageres [<url> <resolution> ...] | ||
Example | ||
pageres todomvc.com yeoman.io --sizes 1366x768,1600x900 | ||
pageres todomvc.com yeoman.io 1366x768 1600x900 | ||
pageres 1366x768 < urls.txt | ||
cat screen-resolutions.txt | pageres todomvc.com yeoman.io | ||
If --sizes is not specified it will fall back to the ten most popular screen resolutions according to w3counter. | ||
The <filepath> file should be formatted to have one <resolution> on each line. | ||
You can also pipe in a newline separated list of urls and screen resolutions which will get merged with the arguments. | ||
If no screen resolutions are specified it will fall back to the ten most popular ones according to w3counter. | ||
``` | ||
@@ -41,0 +45,0 @@ |
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
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
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
6663
117
80
1
7
+ Addedlodash@~2.4.1
+ Addedsudo-block@~0.3.0
+ Addedansi-styles@0.2.0(transitive)
+ Addedchalk@0.3.0(transitive)
+ Addedlodash@2.4.2(transitive)
+ Addedsudo-block@0.3.0(transitive)