CB-9254 copy native project files on cordova update

Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/708b7fca
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/708b7fca
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/708b7fca

Branch: refs/heads/4.1.x
Commit: 708b7fca1add29a7f51f46953995061e07bf9461
Parents: afe1fa0
Author: Steve Gill <stevengil...@gmail.com>
Authored: Thu Feb 25 18:04:27 2016 -0800
Committer: Steve Gill <stevengil...@gmail.com>
Committed: Fri Feb 26 14:41:15 2016 -0800

----------------------------------------------------------------------
 bin/lib/create.js |  74 +++++++++++++++---------------------
 package.json      | 100 +++++++++++++++++++++++++------------------------
 2 files changed, 82 insertions(+), 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/708b7fca/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index 3863338..842086e 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -23,6 +23,7 @@ var shell = require('shelljs'),
     Q = require ('q'),
     path = require('path'),
     fs = require('fs'),
+    plist = require('plist'),
     ROOT = path.join(__dirname, '..', '..');
 
 function updateSubprojectHelp() {
@@ -100,31 +101,49 @@ function copyScripts(projectPath) {
 }
 
 /*
- * Copy classes from cordova-ios/bin/template/__PROJECT_NAME__/Classes
- * to cordova project. Replace strings in updated Classes
+ * Copy project template files into cordova project.  
  *
  * @param {String} project_path         path to cordova project
  * @param {String} project_name         name of cordova project
  * @param {String} project_template_dir path to cordova-ios template directory 
    
+ * @parm  {BOOL}   use_cli              true if cli project
  */
-function copyTemplateClasses(project_path, project_name, project_template_dir) 
{
+function copyTemplateFiles(project_path, project_name, project_template_dir, 
package_name) {
     var r = path.join(project_path, project_name);
 
-    //copy updated classes from cordova-ios into cordova project
-    shell.cp('-rf', path.join(project_template_dir, '__PROJECT_NAME__', 
'Classes','*'), path.join(r, 'Classes'));
+    shell.rm('-rf', path.join(project_path, project_name+'.xcodeproj'));
+    shell.cp('-rf', path.join(project_template_dir, '__NON-CLI__.xcodeproj'), 
project_path);
+    shell.mv('-f', path.join(project_path, '__NON-CLI__.xcodeproj'), 
path.join(project_path, project_name+'.xcodeproj'));
 
-    /* replace __PROJECT_NAME__ ACTIVITY string in:
+    shell.rm('-rf', r);
+    shell.cp('-rf', path.join(project_template_dir, '__PROJECT_NAME__'), 
project_path);
+    shell.mv('-f', path.join(project_path, '__PROJECT_NAME__'), r);
+
+    shell.mv('-f', path.join(r, '__PROJECT_NAME__-Info.plist'), path.join(r, 
project_name+'-Info.plist'));
+    shell.mv('-f', path.join(r, '__PROJECT_NAME__-Prefix.pch'), path.join(r, 
project_name+'-Prefix.pch'));
+    shell.mv('-f', path.join(r, 'gitignore'), path.join(r, '.gitignore'));
+
+    /*replace __PROJECT_NAME__ and --ID-- with ACTIVITY and ID strings, 
respectively, in:
      *
+     * - ./__PROJECT_NAME__.xcodeproj/project.pbxproj
      * - ./__PROJECT_NAME__/Classes/AppDelegate.h
      * - ./__PROJECT_NAME__/Classes/AppDelegate.m
      * - ./__PROJECT_NAME__/Classes/MainViewController.h
      * - ./__PROJECT_NAME__/Classes/MainViewController.m
+     * - ./__PROJECT_NAME__/Resources/main.m
+     * - ./__PROJECT_NAME__/Resources/__PROJECT_NAME__-info.plist
+     * - ./__PROJECT_NAME__/Resources/__PROJECT_NAME__-Prefix.plist
      */
     var project_name_esc = project_name.replace(/&/g, '\\&');
+    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, 
path.join(r+'.xcodeproj', 'project.pbxproj'));
     shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'AppDelegate.h'));
     shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'AppDelegate.m'));
     shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'MainViewController.h'));
     shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'MainViewController.m'));
+    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'main.m'));
+    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
project_name+'-Info.plist'));
+    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
project_name+'-Prefix.pch'));
+    shell.sed('-i', /--ID--/g, package_name, path.join(r, 
project_name+'-Info.plist'));
 }
 
 function detectProjectName(projectDir) {
@@ -173,7 +192,6 @@ exports.createProject = function(project_path, 
package_name, project_name, opts,
     package_name = package_name || 'my.cordova.project';
     project_name = project_name || 'CordovaExample';
     var use_shared = !!opts.link;
-    var use_cli = !!opts.cli;
     var bin_dir = path.join(ROOT, 'bin'),
         project_parent = path.dirname(project_path);
     var project_template_dir = opts.customTemplate || path.join(bin_dir, 
'templates', 'project');
@@ -191,44 +209,12 @@ exports.createProject = function(project_path, 
package_name, project_name, opts,
     // create the project directory and copy over files
     shell.mkdir(project_path);
     shell.cp('-rf', path.join(project_template_dir, 'www'), project_path);
-    if (use_cli) {
-        shell.cp('-rf', path.join(project_template_dir, '__CLI__.xcodeproj'), 
project_path);
-        shell.mv(path.join(project_path, '__CLI__.xcodeproj'), 
path.join(project_path, project_name+'.xcodeproj'));
-    }
-    else {
-        shell.cp('-rf', path.join(project_template_dir, 
'__NON-CLI__.xcodeproj'), project_path);
-        shell.mv(path.join(project_path, '__NON-CLI__.xcodeproj'), 
path.join(project_path, project_name+'.xcodeproj'));
-    }
-    shell.cp('-rf', path.join(project_template_dir, '__PROJECT_NAME__'), 
project_path);
-    shell.mv(path.join(project_path, '__PROJECT_NAME__'), 
path.join(project_path, project_name));
-
-    var r = path.join(project_path, project_name);
-    shell.mv(path.join(r, '__PROJECT_NAME__-Info.plist'), path.join(r, 
project_name+'-Info.plist'));
-    shell.mv(path.join(r, '__PROJECT_NAME__-Prefix.pch'), path.join(r, 
project_name+'-Prefix.pch'));
-    shell.mv(path.join(r, 'gitignore'), path.join(r, '.gitignore'));
 
-    /*replace __PROJECT_NAME__ and --ID-- with ACTIVITY and ID strings, 
respectively, in:
-     *
-     * - ./__PROJECT_NAME__.xcodeproj/project.pbxproj
-     * - ./__PROJECT_NAME__/Classes/AppDelegate.h
-     * - ./__PROJECT_NAME__/Classes/AppDelegate.m
-     * - ./__PROJECT_NAME__/Resources/main.m
-     * - ./__PROJECT_NAME__/Resources/__PROJECT_NAME__-info.plist
-     * - ./__PROJECT_NAME__/Resources/__PROJECT_NAME__-Prefix.plist
-     */
-    var project_name_esc = project_name.replace(/&/g, '\\&');
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, 
path.join(r+'.xcodeproj', 'project.pbxproj'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'AppDelegate.h'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'AppDelegate.m'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'MainViewController.h'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'Classes', 'MainViewController.m'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
'main.m'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
project_name+'-Info.plist'));
-    shell.sed('-i', /__PROJECT_NAME__/g, project_name_esc, path.join(r, 
project_name+'-Prefix.pch'));
-    shell.sed('-i', /--ID--/g, package_name, path.join(r, 
project_name+'-Info.plist'));
+    //Copy project template files
+    copyTemplateFiles(project_path, project_name, project_template_dir, 
package_name);
 
     //CordovaLib stuff
-    copyJsAndCordovaLib(project_path, project_name, use_shared);
+    copyJsAndCordovaLib(project_path, project_name, package_name);
     copyScripts(project_path);
 
     events.emit('log', generateDoneMessage('create', use_shared));
@@ -238,8 +224,10 @@ exports.createProject = function(project_path, 
package_name, project_name, opts,
 exports.updateProject = function(projectPath, opts, events) {
     var projectName = detectProjectName(projectPath);
     var project_template_dir = path.join(ROOT, 'bin', 'templates', 'project');
+    //Get package_name from existing projectName-Info.plist file
+    var package_name = plist.parse(fs.readFileSync(path.join(projectPath, 
projectName, projectName+'-Info.plist'), 'utf8'))['CFBundleIdentifier'];
     setShellFatal(true, function() {
-        copyTemplateClasses(projectPath, projectName, project_template_dir)
+        copyTemplateFiles(projectPath, projectName, project_template_dir, 
package_name);
         copyJsAndCordovaLib(projectPath, projectName, opts.link);
         copyScripts(projectPath);
         events.emit('log',generateDoneMessage('update', opts.link));

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/708b7fca/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index c3b86da..447a38e 100644
--- a/package.json
+++ b/package.json
@@ -1,50 +1,52 @@
 {
-    "name": "cordova-ios",
-    "version": "4.2.0-dev",
-    "description": "cordova-ios release",
-    "main": "bin/templates/scripts/cordova/Api.js",
-    "repository": {
-        "type": "git",
-        "url": "https://git-wip-us.apache.org/repos/asf/cordova-ios.git";
-    },
-    "keywords": [
-        "ios",
-        "cordova",
-        "apache",
-        "ecosystem:cordova",
-        "cordova:platform"
-    ],
-    "scripts": {
-        "test": "npm run jshint && npm run jasmine",
-        "jasmine": "npm run objc-tests && npm run jasmine-tests",
-        "objc-tests": "jasmine-node --captureExceptions --color 
tests/spec/cordovalib.spec.js",
-        "jasmine-tests": "jasmine-node --captureExceptions --color 
tests/spec/create.spec.js",
-        "jshint": "node node_modules/jshint/bin/jshint bin && node 
node_modules/jshint/bin/jshint tests"
-    },
-    "author": "Apache Software Foundation",
-    "license": "Apache Version 2.0",
-    "devDependencies": {
-        "jshint": "^2.6.0",
-        "uncrustify": "^0.6.1",
-        "tmp": "^0.0.26",
-        "jasmine-node": "~1",
-        "coffee-script": "^1.7.1",
-        "nodeunit": "^0.8.7"
-    },
-    "dependencies": {
-        "cordova-common": "^1.1.0",
-        "ios-sim": "^5.0.6",
-        "nopt": "^3.0.6",
-        "q": "^1.4.1",
-        "shelljs": "^0.5.3",
-        "xcode": "^0.8.3"
-    },
-    "bundledDependencies": [
-        "cordova-common",
-        "ios-sim",
-        "nopt",
-        "q",
-        "shelljs",
-        "xcode"
-    ]
-}
\ No newline at end of file
+  "name": "cordova-ios",
+  "version": "4.2.0-dev",
+  "description": "cordova-ios release",
+  "main": "bin/templates/scripts/cordova/Api.js",
+  "repository": {
+    "type": "git",
+    "url": "https://git-wip-us.apache.org/repos/asf/cordova-ios.git";
+  },
+  "keywords": [
+    "ios",
+    "cordova",
+    "apache",
+    "ecosystem:cordova",
+    "cordova:platform"
+  ],
+  "scripts": {
+    "test": "npm run jshint && npm run jasmine",
+    "jasmine": "npm run objc-tests && npm run jasmine-tests",
+    "objc-tests": "jasmine-node --captureExceptions --color 
tests/spec/cordovalib.spec.js",
+    "jasmine-tests": "jasmine-node --captureExceptions --color 
tests/spec/create.spec.js",
+    "jshint": "node node_modules/jshint/bin/jshint bin && node 
node_modules/jshint/bin/jshint tests"
+  },
+  "author": "Apache Software Foundation",
+  "license": "Apache Version 2.0",
+  "devDependencies": {
+    "jshint": "^2.6.0",
+    "uncrustify": "^0.6.1",
+    "tmp": "^0.0.26",
+    "jasmine-node": "~1",
+    "coffee-script": "^1.7.1",
+    "nodeunit": "^0.8.7"
+  },
+  "dependencies": {
+    "cordova-common": "^1.1.0",
+    "ios-sim": "^5.0.6",
+    "nopt": "^3.0.6",
+    "plist": "^1.2.0",
+    "q": "^1.4.1",
+    "shelljs": "^0.5.3",
+    "xcode": "^0.8.3"
+  },
+  "bundledDependencies": [
+    "cordova-common",
+    "ios-sim",
+    "nopt",
+    "plist",
+    "q",
+    "shelljs",
+    "xcode"
+  ]
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to