[
https://issues.apache.org/jira/browse/CB-6437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13975780#comment-13975780
]
ASF GitHub Bot commented on CB-6437:
------------------------------------
Github user cmarcelk commented on a diff in the pull request:
https://github.com/apache/cordova-mobile-spec/pull/55#discussion_r11817282
--- Diff: createmobilespec/createmobilespec.js ---
@@ -17,99 +16,197 @@
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-*/
+ */
-var fs = require('fs'),
- path = require('path'),
+var fs = require("fs"),
+ path = require("path"),
+ child_process = require("child_process"),
shelljs,
optimist;
+
+// Dependencies requirements check
try {
- shelljs = require('shelljs');
- optimist = require('optimist');
+ shelljs = require("shelljs");
+ optimist = require("optimist");
} catch (e) {
- console.error('Missing module. Please run "npm install" from this
directory:\n\t' +
+ console.error('Missing module. Please run \"npm install\" from this
directory:\n\t' +
path.dirname(__dirname));
process.exit(2);
}
-
-var tokens = process.argv.slice(2);
-var argv = optimist(tokens)
- .default('android', false)
- .default('ios', false)
- .usage('Usage: $0 [--android] [--ios]\nDefault is to use
Android and iOS.')
- .argv;
-// preserve the original behavior when there are no args
-if (tokens.length === 0) {
- argv.android = true;
- argv.ios = true;
+// Print relevant information
+console.log("Creating \"mobilespec\" project. If you have any errors, it
may be from missing repositories.");
+console.log("To clone needed repositories:");
+console.log(" ./cordova-coho/coho repo-clone -r plugins -r mobile-spec -r
android -r ios -r cli");
+console.log("To update all repositories:");
+console.log(" ./cordova-coho/coho repo-update");
+
+// Setting up vars, folders and libraries, to ensure full compatibility
cross platform, absolute paths are used instead of relative paths
+
+// Cordova Coho dir, it should contain all libraries and required
repositories
+// [cordova-cli, cordova-android, cordova-blackberry, cordova-ios,
cordova-windows, cordova-windows8, all plugins libraries, cordova-mobile-spec,
cordova-js]
+// searchDir function it was added, to look for cordova-coho folder
backwards, for cases like absolute/path/cordova-coho/cordova-coho/...All
libraries
+// This is to make sure that cordova-coho exists and it's the right one.
+var mainModDir = process.cwd(),
+ coho_dir = searchDir(mainModDir, "cordova-coho"),
+ cordova_cli = path.join(coho_dir, "cordova-cli", "bin", "cordova"),
+ cordova_ms = path.join(coho_dir, "cordova-mobile-spec"),
+ cordova_js = path.join(coho_dir, "cordova-js"),
+ ms_project_dir = path.join(coho_dir, "mobilespec"),
+ platforms = [],
+//Setting up optimist features
+ tokens = process.argv.slice(2),
+ argv = optimist(tokens)
+ .usage("Usage: $0 [--platform].")
+ .argv;
+
+// Main libraries and path"s requirements check
+if (!fs.existsSync(coho_dir)) {
+ console.log("Please run this script from the directory that contains
cordova-coho");
+ shelljs.exit(1);
}
-var platforms = [];
-if (argv.android) { platforms.push('android'); }
-if (argv.ios) { platforms.push('ios'); }
-if (!fs.existsSync('cordova-mobile-spec')) {
- console.log('Please run this script from the directory that contains
cordova-mobile-spec');
+if (!fs.existsSync(cordova_ms)) {
+ console.log("Please run this script from the directory that contains
cordova-mobile-spec");
shelljs.exit(1);
}
-if (fs.existsSync('mobilespec')) {
- console.log('Directory "mobilespec" already exists. Delete it first
then re-run.');
+if (!fs.existsSync(cordova_js)) {
+ console.log("Please run this script from the directory that contains
cordova-js");
shelljs.exit(1);
}
-console.log('Creating mobilespec project. If you have any errors, it may
be from missing repositories.');
-console.log('To clone needed repositories:');
-console.log(" ./cordova-coho/coho repo-clone -r plugins -r mobile-spec -r
cli -r " + platforms.join(' -r '));
-console.log('To update all repositories:');
-console.log(' ./cordova-coho/coho repo-update');
+// No arguments throws error
+if (tokens.length === 0) {
+ throw new Error('No arguments found');
+}
+if (argv.help) {console.log("Usage: createmobilespec --platformName");
return;}
+if (argv.android) { platforms.push("android");}
+if (argv.ios) { platforms.push("ios");}
+if (argv.blackberry10) { platforms.push("blackberry10");}
+if (argv.wp8) { platforms.push("wp8");}
+if (argv.windows8) { platforms.push("windows8");}
+
+if (platforms.length === 0){
+ throw new Error ('No supported platforms');
+}
-var repoParent = process.cwd();
+// Setting up config.fatal as true, if something goes wrong the program it
will terminate
shelljs.config.fatal = true;
-shelljs.exec('./cordova-cli/bin/cordova create mobilespec --link-to
cordova-mobile-spec');
+// Custom function to delete project folder, using recursive actions
+try {
+ delFileSync(ms_project_dir);
+} catch (e) {
+ //The project directory after an android build and emulation is locked
by ADB.exe (Android Debug Bridge).
+ //Kill the process & restart folder deletion
+ console.log("Not all files were deleted, killing Adb.exe process
to unlock project folder ...");
+ if (/^win/.test(process.platform)) {
+ shelljs.exec("TASKKILL /F /IM ADB.exe /T");
+ delFileSync(ms_project_dir);
+ }else
+ throw new Error("Error during folder deletion, try to remove
mobilespec project folder manually");
+ }
-shelljs.pushd('cordova-js');
-shelljs.exec('grunt');
-shelljs.popd();
+// Creating the project, linked to cordova-mobile-spec library
+shelljs.pushd(coho_dir);
+shelljs.exec(cordova_cli + " create mobilespec
org.apache.cordova.mobilespec MobileSpec_Tests --link-to cordova-mobile-spec");
-shelljs.pushd('mobilespec');
+// Executing grunt task, to generate updated js files for each platform
+shelljs.pushd(cordova_js);
+shelljs.exec("grunt");
+
+shelljs.pushd(ms_project_dir);
--- End diff --
Consider doing a popd if the directory in the pushd is no longer needed.
> [Mobilespec] improve and add support for blackberry, wp8, windows8
> ------------------------------------------------------------------
>
> Key: CB-6437
> URL: https://issues.apache.org/jira/browse/CB-6437
> Project: Apache Cordova
> Issue Type: Improvement
> Components: BlackBerry, mobile-spec, Windows 8, WP8
> Affects Versions: 3.4.0
> Reporter: Martin Gonzalez
> Assignee: Martin Gonzalez
> Labels: blackberry10, mobilespec,, module, node, support,
> windows8, wp8
> Fix For: 3.5.0
>
>
> The new node module for Mobilespecs can be improved.
> -Adding more functionality
> -Supporting platforms as blackberry10, windows phone 8 and windows 8.
> -Add functionality to automate some process as well.
> -Add functionality to add platforms according to the development environment
> --- Android, Blackberry, iOS ---> Mac.
> --- Android, Blackberry, Windows 8, Windows Phone 8 ---> Windows 8.
> --- Android, Blackberry ---> Linux or any other Windows OS.
--
This message was sent by Atlassian JIRA
(v6.2#6252)