mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
meteor update app
This commit is contained in:
@@ -160,8 +160,7 @@ var files = module.exports = {
|
||||
return test_dir;
|
||||
},
|
||||
|
||||
// compatibility shim. delete when unused.
|
||||
find_app_dir: function (filepath) {
|
||||
findAppDir: function (filepath) {
|
||||
return files.find_upwards(files.is_app_dir, filepath);
|
||||
},
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ Fiber(function () {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
var Commands = [];
|
||||
|
||||
var usage = function() {
|
||||
process.stdout.write(
|
||||
"Usage: meteor [--version] [--help] <command> [<args>]\n" +
|
||||
@@ -48,7 +50,7 @@ Fiber(function () {
|
||||
// @param cmd {String} The command that was run. Used when printing
|
||||
// error message.
|
||||
var requireDirInApp = function (cmd) {
|
||||
var app_dir = files.find_upwards(files.is_app_dir);
|
||||
var app_dir = files.findAppDir();
|
||||
if (app_dir) {
|
||||
return app_dir;
|
||||
} else {
|
||||
@@ -99,7 +101,7 @@ Fiber(function () {
|
||||
if (argv.release)
|
||||
return argv.release;
|
||||
|
||||
var appDir = files.find_upwards(files.is_app_dir);
|
||||
var appDir = files.findAppDir();
|
||||
if (appDir)
|
||||
return project.getMeteorReleaseVersion(appDir);
|
||||
else
|
||||
@@ -112,8 +114,6 @@ Fiber(function () {
|
||||
mongo_runner.find_mongo_port(app_dir, callback);
|
||||
};
|
||||
|
||||
Commands = [];
|
||||
|
||||
var findCommand = function (name) {
|
||||
for (var i = 0; i < Commands.length; i++)
|
||||
if (Commands[i].name === name)
|
||||
@@ -273,7 +273,7 @@ Fiber(function () {
|
||||
"sample applications. Use --list to see the available examples.");
|
||||
|
||||
var new_argv = opt.argv;
|
||||
var appname;
|
||||
var appPath;
|
||||
|
||||
var example_dir = path.join(__dirname, '..', 'examples');
|
||||
var examples = _.reject(fs.readdirSync(example_dir), function (e) {
|
||||
@@ -281,9 +281,9 @@ Fiber(function () {
|
||||
});
|
||||
|
||||
if (argv._.length === 1) {
|
||||
appname = argv._[0];
|
||||
appPath = argv._[0];
|
||||
} else if (argv._.length === 0 && new_argv.example) {
|
||||
appname = new_argv.example;
|
||||
appPath = new_argv.example;
|
||||
}
|
||||
|
||||
if (new_argv['list']) {
|
||||
@@ -292,28 +292,28 @@ Fiber(function () {
|
||||
process.stdout.write(" " + e + "\n");
|
||||
});
|
||||
process.stdout.write("\n" +
|
||||
"Create a project from an example with 'meteor create --example <name>'.\n")
|
||||
"Create a project from an example with 'meteor create --example <name>'.\n");
|
||||
process.exit(1);
|
||||
};
|
||||
|
||||
if (argv.help || !appname) {
|
||||
if (argv.help || !appPath) {
|
||||
process.stdout.write(opt.help());
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (fs.existsSync(appname)) {
|
||||
process.stderr.write(appname + ": Already exists\n");
|
||||
if (fs.existsSync(appPath)) {
|
||||
process.stderr.write(appPath + ": Already exists\n");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (files.find_app_dir(appname)) {
|
||||
if (files.findAppDir(appPath)) {
|
||||
process.stderr.write(
|
||||
"You can't create a Meteor project inside another Meteor project.\n");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
var transform = function (x) {
|
||||
return x.replace(/~name~/g, path.basename(appname));
|
||||
return x.replace(/~name~/g, path.basename(appPath));
|
||||
};
|
||||
|
||||
if (new_argv.example) {
|
||||
@@ -322,12 +322,12 @@ Fiber(function () {
|
||||
process.stderr.write("List available applications with 'meteor create --list'.\n");
|
||||
process.exit(1);
|
||||
} else {
|
||||
files.cp_r(path.join(example_dir, new_argv.example), appname, {
|
||||
files.cp_r(path.join(example_dir, new_argv.example), appPath, {
|
||||
ignore: [/^local$/]
|
||||
});
|
||||
}
|
||||
} else {
|
||||
files.cp_r(path.join(__dirname, 'skel'), appname, {
|
||||
files.cp_r(path.join(__dirname, 'skel'), appPath, {
|
||||
transform_filename: function (f) {
|
||||
return transform(f);
|
||||
},
|
||||
@@ -341,18 +341,17 @@ Fiber(function () {
|
||||
});
|
||||
}
|
||||
|
||||
fs.writeFileSync(path.join(appname, '.meteor', 'release'),
|
||||
releaseVersion + '\n');
|
||||
project.writeMeteorReleaseVersion(appPath, releaseVersion);
|
||||
|
||||
process.stderr.write(appname + ": created");
|
||||
process.stderr.write(appPath + ": created");
|
||||
if (new_argv.example &&
|
||||
new_argv.example !== appname)
|
||||
new_argv.example !== appPath)
|
||||
process.stderr.write(" (from '" + new_argv.example + "' template)");
|
||||
process.stderr.write(".\n\n");
|
||||
|
||||
process.stderr.write(
|
||||
"To run your new app:\n" +
|
||||
" cd " + appname + "\n" +
|
||||
" cd " + appPath + "\n" +
|
||||
" meteor\n");
|
||||
}
|
||||
});
|
||||
@@ -405,7 +404,26 @@ Fiber(function () {
|
||||
" is already the latest release.");
|
||||
}
|
||||
|
||||
// XXX update app XXX
|
||||
// If we're not in an app, then we're done. Otherwise, we have to upgrade
|
||||
// the app too.
|
||||
var appDir = files.findAppDir();
|
||||
if (!appDir)
|
||||
return;
|
||||
|
||||
var appRelease = project.getMeteorReleaseVersion(appDir);
|
||||
if (appRelease === releaseVersion) {
|
||||
console.log("Your app is already running Meteor release "
|
||||
+ releaseVersion + ".");
|
||||
return;
|
||||
}
|
||||
|
||||
project.writeMeteorReleaseVersion(appDir, releaseVersion);
|
||||
// This is the right spot to do any other changes we need to the app in
|
||||
// order to update it for the new release (new metadata file formats,
|
||||
// etc, or maybe even updating renamed APIs).
|
||||
console.log("Updated app '%s' to release %s from release %s.",
|
||||
appDir, releaseVersion, appRelease);
|
||||
// XXX print change log
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -60,8 +60,12 @@ var project = module.exports = {
|
||||
return ret;
|
||||
},
|
||||
|
||||
_meteorReleaseFilePath: function (appDir) {
|
||||
return path.join(appDir, '.meteor', 'release');
|
||||
},
|
||||
|
||||
getMeteorReleaseVersion: function (appDir) {
|
||||
var releasePath = path.join(appDir, '.meteor', 'release');
|
||||
var releasePath = project._meteorReleaseFilePath(appDir);
|
||||
if (fs.existsSync(releasePath))
|
||||
return project._trim_line(project._get_lines(releasePath)[0]);
|
||||
else
|
||||
@@ -71,6 +75,11 @@ var project = module.exports = {
|
||||
return '0.6.0';
|
||||
},
|
||||
|
||||
writeMeteorReleaseVersion: function (appDir, release) {
|
||||
var releasePath = project._meteorReleaseFilePath(appDir);
|
||||
fs.writeFileSync(releasePath, release + '\n');
|
||||
},
|
||||
|
||||
add_package: function (app_dir, name) {
|
||||
var lines = project._get_packages_lines(app_dir);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user