From 2aa9747b4795fc216b06a86450ecdd736534fe68 Mon Sep 17 00:00:00 2001 From: isaacs Date: Sat, 8 Jan 2011 23:57:11 -0800 Subject: Use the package.json data in the installation So to verify the version of node in use. Note that this install.sh can't be deployed until AFTER this node is published. --- bin/read-package-json.js | 18 ++++++++++++++ bin/semver.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 bin/read-package-json.js create mode 100644 bin/semver.js (limited to 'bin') 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 [ ...]") + 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 [-r ]" + ,"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")) +} + + -- cgit v1.2.3