From a5dc7de519fb772ebd84c232f357a3e935c2bfc9 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Mon, 25 Feb 2013 18:00:09 -0800 Subject: [PATCH] - die if you use --release in a checkout - don't run calculateReleaseVersion twice for test-packages - DTRT for test-packages in a checkout --- lib/meteor.js | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/lib/meteor.js b/lib/meteor.js index 71a6e84009..aeb0b00e3f 100644 --- a/lib/meteor.js +++ b/lib/meteor.js @@ -71,7 +71,17 @@ Fiber(function () { // returns the release version to use (for certain commands). if we // are in an app, reads '.meteor/release'. otherwise, the latest // found in the warehouse, or null if warehouse has no releases + var releaseVersion = null; var calculateReleaseVersion = function (argv) { + if (files.in_checkout()) { + if (argv.release) { + console.error("Cannot specify --release when running meteor from a git checkout."); + process.exit(1); + } + // There is no release in a git checkout. + return null; + } + // If a release was specified explicitly on the command line, that's the one // to use. if (argv.release) @@ -181,30 +191,22 @@ Fiber(function () { process.exit(1); } - var releaseVersion = calculateReleaseVersion(new_argv); - var testPackages; if (new_argv["package-dir"]) { var packageDir = path.resolve(new_argv["package-dir"], "."); // strips trailing path.sep // was important to strip trailing path.sep, otherwise we'd get a package named "foo/" var packageName = path.basename(packageDir); testPackages = [packages.loadFromDir(packageName, packageDir)]; + } else if (new_argv._[1]) { + testPackages = new_argv._[1].split(','); + } else if (files.in_checkout()) { + testPackages = _.keys(packages.list()); + } else if (releaseVersion) { + var releaseManifest = warehouse.releaseManifestByVersion(releaseVersion); + testPackages = _.keys(packages.list(releaseManifest)); } else { - if (new_argv._[1]) { - testPackages = new_argv._[1].split(','); - } else { - if (releaseVersion) { - var releaseManifest = warehouse.releaseManifestByVersion(releaseVersion); - testPackages = _.keys(packages.list(releaseManifest)); - } else { - if (files.in_checkout()) { - testPackages = _.keys(packages.list()); - } else { - process.stdout.write("Please specify a release version."); - process.exit(1); - } - } - } + process.stdout.write("Please specify a release version."); + process.exit(1); } var bundleOptions = { @@ -715,7 +717,7 @@ Fiber(function () { // engine corresponding to that release is the same as the one // we're running. If not, springboard to the right engine (after // having fetched it to the local warehouse) - var engineSpringboard = function (releaseVersion) { + var engineSpringboard = function () { var releaseManifest = warehouse.releaseManifestByVersion(releaseVersion); if (releaseManifest.engine === files.getEngineVersion()) return; @@ -741,12 +743,12 @@ Fiber(function () { var argv = optimist.argv; - var releaseVersion = calculateReleaseVersion(argv); + releaseVersion = calculateReleaseVersion(argv); // if we're not running the correct engine, fetch it and // re-run. if this is a git checkout, always run it. if (!files.in_checkout()) - engineSpringboard(releaseVersion); + engineSpringboard(); if (argv.help) { argv._.splice(0, 0, "help");