You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2014/06/24 21:29:56 UTC
[3/9] android commit: CB-5971: Factor out package/project name
validation logic
CB-5971: Factor out package/project name validation logic
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/ff260c03
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/ff260c03
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/ff260c03
Branch: refs/heads/4.0.x
Commit: ff260c03caedeeaaf00563e117faefb8004f269b
Parents: 297f862
Author: Ian Clelland <ic...@chromium.org>
Authored: Tue Jun 24 13:49:12 2014 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Tue Jun 24 14:05:56 2014 -0400
----------------------------------------------------------------------
bin/lib/create.js | 76 +++++++++++++++++++++++++++++++++-----------------
1 file changed, 50 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/ff260c03/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index f99d1da..8a90827 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -107,6 +107,50 @@ function copyScripts(projectPath) {
}
/**
+ * Test whether a package name is acceptable for use as an android project.
+ * Returns a promise, fulfilled if the package name is acceptable; rejected
+ * otherwise.
+ */
+function validatePackageName(package_name) {
+ //Make the package conform to Java package types
+ if (!/[a-zA-Z0-9_]+\.[a-zA-Z0-9_](.[a-zA-Z0-9_])*/.test(package_name)) {
+ return Q.reject('Package name must look like: com.company.Name');
+ }
+
+ //Enforce underscore limitation
+ if (/[_]+[a-zA-Z0-9_]*/.test(package_name)) {
+ return Q.reject("Package name can't begin with an underscore");
+ }
+
+ //Class is a reserved word
+ if(/[C|c]+lass+[\s|\.]/.test(package_name) && !/[a-zA-Z0-9_]+[C|c]+lass/.test(package_name))
+ {
+ return Q.reject('class is a reserved word');
+ }
+
+ return Q.resolve();
+}
+
+/**
+ * Test whether a project name is acceptable for use as an android class.
+ * Returns a promise, fulfilled if the project name is acceptable; rejected
+ * otherwise.
+ */
+function validateProjectName(project_name) {
+ //Enforce stupid name error
+ if (project_name === 'CordovaActivity') {
+ return Q.reject('Project name cannot be CordovaActivity');
+ }
+
+ //Classes in Java don't begin with numbers
+ if (/^[0-9]/.test(project_name)) {
+ return Q.reject('Project name must not begin with a number');
+ }
+
+ return Q.resolve();
+}
+
+/**
* $ create [options]
*
* Creates an android application with the given options.
@@ -146,34 +190,14 @@ exports.createProject = function(project_path, package_name, project_name, proje
}
//Make the package conform to Java package types
- if (!/[a-zA-Z0-9_]+\.[a-zA-Z0-9_](.[a-zA-Z0-9_])*/.test(package_name)) {
- return Q.reject('Package name must look like: com.company.Name');
- }
-
- //Enforce underscore limitation
- if (/[_]+[a-zA-Z0-9_]*/.test(package_name)) {
- return Q.reject("Package name can't begin with an underscore");
- }
-
- //Enforce stupid name error
- if (project_name === 'CordovaActivity') {
- return Q.reject('Project name cannot be CordovaActivity');
- }
-
- //Classes in Java don't begin with numbers
- if (/[0-9]+[a-zA-Z0-9]/.test(project_name)) {
- return Q.reject('Project name must not begin with a number');
- }
-
- //Class is a reserved word
- if(/[C|c]+lass+[\s|\.]/.test(package_name) && !/[a-zA-Z0-9_]+[C|c]+lass/.test(package_name))
- {
- return Q.reject('class is a reserved word');
- }
-
+ return validatePackageName(package_name)
+ .then(function() {
+ validateProjectName(project_name);
+ })
// Check that requirements are met and proper targets are installed
- return check_reqs.run()
.then(function() {
+ check_reqs.run();
+ }).then(function() {
// Log the given values for the project
console.log('Creating Cordova project for the Android platform:');
console.log('\tPath: ' + project_path);