forked from ionic-team/ionic-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.js
More file actions
84 lines (75 loc) · 2.14 KB
/
build.js
File metadata and controls
84 lines (75 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
'use strict';
var extend = require('../utils/extend');
var npmScripts = require('../utils/npmScripts');
var os = require('os');
var Q = require('q');
var IonicAppLib = require('ionic-app-lib');
var ConfigXml = IonicAppLib.configXml;
var log = IonicAppLib.logging.logger;
var cordovaUtils = require('../utils/cordova');
var settings = {
title: 'build',
name: 'build',
summary: 'Build (prepare + compile) an Ionic project for a given platform.\n',
args: {
'<PLATFORM>': '',
'[options]': ''
},
options: {
'--nohooks|-n': {
title: 'Do not add default Ionic hooks for Cordova',
boolean: true
}
},
isProjectTask: true
};
function run(ionic, argv, rawCliArguments) {
var appDirectory = process.cwd();
var rawArgs = rawCliArguments.slice(0);
var cmdName = settings.name;
// If platform was not passed then add it to the rawArgs
var runPlatform = argv._[1];
if (!runPlatform) {
runPlatform = 'ios';
rawArgs.splice(1, 0, runPlatform);
}
if (runPlatform === 'ios' && os.platform() !== 'darwin') {
log.error('✗ You cannot run iOS unless you are on Mac OSX.');
return Q();
}
var promiseList = []
.concat(!cordovaUtils.isPlatformInstalled(runPlatform, appDirectory) ?
cordovaUtils.installPlatform(runPlatform) :
[])
.concat(!cordovaUtils.arePluginsInstalled(appDirectory) ?
cordovaUtils.installPlugins() :
[]);
return Q.all(promiseList).then(function() {
return npmScripts.hasIonicScript('build');
})
.then(function(hasBuildCommand) {
if (hasBuildCommand) {
return npmScripts.runIonicScript('build', rawArgs.slice(2));
}
return Q.resolve();
})
.then(function() {
// ensure the content node was set back to its original
return ConfigXml.setConfigXml(appDirectory, {
resetContent: true,
errorWhenNotFound: false
});
})
.then(function() {
var optionList = cordovaUtils.filterArgumentsForCordova(cmdName, argv, rawArgs);
return cordovaUtils.execCordovaCommand(optionList);
})
.catch(function(ex) {
if (ex instanceof Error) {
log.error(ex);
}
});
}
module.exports = extend(settings, {
run: run
});