ensure some release

This commit is contained in:
David Glasser
2013-03-05 11:11:48 -08:00
parent 1eafa07ecd
commit f202c09a2e
2 changed files with 25 additions and 11 deletions

View File

@@ -82,8 +82,6 @@ Fiber(function () {
// found in the warehouse, or null if warehouse has no releases
var releaseVersion = null;
var calculateReleaseVersion = function (argv) {
ensureSomeRelease();
if (!files.usesWarehouse()) {
if (argv.release) {
console.error("Cannot specify --release when running meteor from a git checkout.");
@@ -94,6 +92,8 @@ Fiber(function () {
return 'none';
}
ensureSomeRelease();
// If a release was specified explicitly on the command line, that's the one
// to use.
if (argv.release)

View File

@@ -25,8 +25,9 @@ var _ = require("underscore");
// XXX do we really need this __dirname dance? Doesn't
// require("./files.js") work?
var files = require(path.join(__dirname, "files.js"));
var project = require(path.join(__dirname, "project.js"));
var files = require('./files.js');
var project = require('./project.js'));
var updater = require('./updater.js');
var PACKAGES_URLBASE = 'https://packages.meteor.com';
@@ -77,11 +78,14 @@ var warehouse = module.exports = {
}
},
_latestReleaseSymlinkPath: function () {
return path.join(warehouse.getWarehouseDir(), 'releases', 'latest');
},
// look in the warehouse for the latest release version. if no
// releases are found, return null.
latestRelease: function() {
var latestReleaseSymlink = path.join(
warehouse.getWarehouseDir(), 'releases', 'latest');
var latestReleaseSymlink = warehouse._latestReleaseSymlinkPath();
try {
return fs.readlinkSync(latestReleaseSymlink);
} catch (e) {
@@ -89,13 +93,23 @@ var warehouse = module.exports = {
}
},
// XXX make errors prettier
fetchLatestRelease: function () {
var manifest = Future.wrap(updater.get_manifest)().wait();
var release = manifest.releases.stable; // XXX in the future support release channels
this._populateWarehouseForRelease(release);
// xcxc write getReleaseDir();
//xcxc fs.symlinkSync(); to temp, random filename
// xcxc rename
// XXX in the future support release channels other than stable
var releaseName = manifest.releases.stable;
if (!releaseName) {
console.error("No stable release found.");
process.exit(1);
}
warehouse._populateWarehouseForRelease(releaseName);
var latestReleaseSymlink = warehouse._latestReleaseSymlinkPath();
var tmpSymlink = latestReleaseSymlink + ".tmp" + warehouse._randomToken();
// You can't directly symlink over an existing symlink, but you can rename
// over it.
fs.symlinkSync(releaseName, tmpSymlink);
fs.renameSync(tmpSymlink, latestReleaseSymlink);
},
existsInWarehouse: function (name, version) {