diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/read-package-json.js | 18 | ||||
-rw-r--r-- | bin/semver.js | 62 |
2 files changed, 80 insertions, 0 deletions
diff --git a/bin/read-package-json.js b/bin/read-package-json.js new file mode 100644 index 000000000..84944df72 --- /dev/null +++ b/bin/read-package-json.js @@ -0,0 +1,18 @@ +var argv = process.argv +if (argv.length < 3) { + console.error("Usage: read-package.json <file> [<fields> ...]") + process.exit(1) +} +var fs = require("fs") + , file = argv[2] + , data = JSON.parse(fs.readFileSync(file, "utf8")) + +if (argv.length === 3) console.log(data) +else argv.slice(3).forEach(function (field) { + field = field.split(".") + var val = data + field.forEach(function (f) { + val = val[f] + }) + console.log(val) +}) diff --git a/bin/semver.js b/bin/semver.js new file mode 100644 index 000000000..5261de134 --- /dev/null +++ b/bin/semver.js @@ -0,0 +1,62 @@ +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +var argv = process.argv.slice(2) + , versions = [] + , range = [] + , gt = [] + , lt = [] + , eq = [] + , semver = require("../lib/utils/semver") + +main() + +function main () { + if (!argv.length) return help() + while (argv.length) { + switch (argv.shift()) { + case "-v": case "--version": + versions.push(argv.shift()) + break + case "-r" : case "--range": + range.push(argv.shift()) + break + default: + return help() + } + } + versions = versions.filter(semver.valid) + for (var i = 0, l = range.length; i < l ; i ++) { + versions = versions.filter(function (v) { + return semver.satisfies(v, range[i]) + }) + if (!versions.length) return fail() + } + return success(versions) +} + +function fail () { process.exit(1) } + +function success () { + versions.sort(semver.compare).forEach(function (v,i,_) { console.log(v) }) +} + +function help () { + console.log(["Usage: semver -v <version> [-r <range>]" + ,"Test if version(s) satisfy the supplied range(s)," + ,"and sort them." + ,"" + ,"Multiple versions or ranges may be supplied." + ,"" + ,"Program exits successfully if all versions satisfy all" + ,"ranges and are valid, and prints all satisfying versions." + ,"If no versions are valid, or ranges are not satisfied," + ,"then exits failure." + ,"" + ,"Versions are printed in ascending order, so supplying" + ,"multiple versions to the utility will just sort them." + ].join("\n")) +} + + |