summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/android/cordova/lib/spawn.js
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/android/cordova/lib/spawn.js')
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/spawn.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/StoneIsland/platforms/android/cordova/lib/spawn.js b/StoneIsland/platforms/android/cordova/lib/spawn.js
new file mode 100755
index 00000000..3e500a09
--- /dev/null
+++ b/StoneIsland/platforms/android/cordova/lib/spawn.js
@@ -0,0 +1,50 @@
+#!/usr/bin/env node
+
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+
+var child_process = require('child_process'),
+ Q = require('q');
+var isWindows = process.platform.slice(0, 3) == 'win';
+
+// Takes a command and optional current working directory.
+module.exports = function(cmd, args, opt_cwd) {
+ var d = Q.defer();
+ var opts = { cwd: opt_cwd, stdio: 'inherit' };
+ try {
+ // Work around spawn not being able to find .bat files.
+ if (isWindows) {
+ args = [['/s', '/c', '"' + [cmd].concat(args).map(function(a){if (/^[^"].* .*[^"]/.test(a)) return '"' + a + '"'; return a;}).join(' ')+'"'].join(' ')];
+ cmd = 'cmd';
+ opts.windowsVerbatimArguments = true;
+ }
+ var child = child_process.spawn(cmd, args, opts);
+ child.on('exit', function(code) {
+ if (code) {
+ d.reject('Error code ' + code + ' for command: ' + cmd + ' with args: ' + args);
+ } else {
+ d.resolve();
+ }
+ });
+ } catch(e) {
+ console.error('error caught: ' + e);
+ d.reject(e);
+ }
+ return d.promise;
+};