add upgrade cli command

Reviewed By: mkonicek

Differential Revision: D2559885

fb-gh-sync-id: 785bd6ad855da30c00b170e737a7dd0f3e756430
This commit is contained in:
Felix Oghină
2015-10-23 03:35:59 -07:00
committed by facebook-github-bot-4
parent 6f71b790f1
commit 7e53ee1095
5 changed files with 70 additions and 13 deletions

View File

@@ -26,13 +26,16 @@ var runAndroid = require('../private-cli/src/runAndroid/runAndroid');
var server = require('../private-cli/src/server/server');
var TerminalAdapter = require('yeoman-environment/lib/adapter.js');
var yeoman = require('yeoman-environment');
var upgrade = require('../private-cli/src/upgrade/upgrade');
var documentedCommands = {
'start': [server, 'starts the webserver'],
'bundle': [bundle, 'builds the javascript bundle for offline use'],
'new-library': [library, 'generates a native library bridge'],
'android': [generateWrapper, 'generates an Android project for your app'],
'run-android': [runAndroid, 'builds your app and starts it on a connected Android emulator or device']
'run-android': [runAndroid, 'builds your app and starts it on a connected Android emulator or device'],
'upgrade': [upgrade, 'upgrade your app\'s template files to the latest version; run this after ' +
'updating the react-native version in your package.json and running npm install']
};
var undocumentedCommands = {

View File

@@ -29,6 +29,11 @@ module.exports = yeoman.generators.NamedBase.extend({
type: String,
defaults: 'com.' + this.name.toLowerCase()
});
this.option('upgrade', {
desc: 'Specify an upgrade',
type: Boolean,
defaults: false
});
},
initializing: function() {
@@ -42,15 +47,29 @@ module.exports = yeoman.generators.NamedBase.extend({
package: this.options.package,
name: this.name
};
this.fs.copyTpl(
this.templatePath(path.join('src', '**')),
this.destinationPath('android'),
templateParams
);
this.fs.copy(
this.templatePath(path.join('bin', '**')),
this.destinationPath('android')
);
if (!this.options.upgrade) {
this.fs.copyTpl(
this.templatePath(path.join('src', '**')),
this.destinationPath('android'),
templateParams
);
this.fs.copy(
this.templatePath(path.join('bin', '**')),
this.destinationPath('android')
);
} else {
this.fs.copyTpl(
this.templatePath(path.join('src', '*')),
this.destinationPath('android'),
templateParams
);
this.fs.copyTpl(
this.templatePath(path.join('src', 'app', '*')),
this.destinationPath(path.join('android', 'app')),
templateParams
);
}
var javaPath = path.join.apply(
null,
['android', 'app', 'src', 'main', 'java'].concat(this.options.package.split('.'))

View File

@@ -26,16 +26,21 @@ module.exports = yeoman.generators.NamedBase.extend({
type: Boolean,
defaults: false
});
this.option('upgrade', {
desc: 'Specify an upgrade',
type: Boolean,
defaults: false
});
// this passes command line arguments down to the composed generators
var args = arguments[0];
var args = {args: arguments[0], options: this.options};
if (!this.options['skip-ios']) {
this.composeWith('react:ios', {args: args}, {
this.composeWith('react:ios', args, {
local: require.resolve(path.resolve(__dirname, '..', 'generator-ios'))
});
}
if (!this.options['skip-android']) {
this.composeWith('react:android', {args: args}, {
this.composeWith('react:android', args, {
local: require.resolve(path.resolve(__dirname, '..', 'generator-android'))
});
}
@@ -59,6 +64,10 @@ module.exports = yeoman.generators.NamedBase.extend({
},
writing: function() {
if (this.options.upgrade) {
// never upgrade index.*.js files
return;
}
if (!this.options['skip-ios']) {
this.fs.copyTpl(
this.templatePath('index.ios.js'),