Skip to content

Commit

Permalink
Merge pull request #4232 from cb1kenobi/timob-13775_3_1_X
Browse files Browse the repository at this point in the history
[TIMOB-13775] If the specified or default avd id does not exist, it'll t...
  • Loading branch information
nebrius committed May 9, 2013
2 parents cdd8681 + ce8983c commit b1632d5
Showing 1 changed file with 59 additions and 9 deletions.
68 changes: 59 additions & 9 deletions android/cli/commands/_build.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@


/*
* build.js: Titanium Android CLI build command
*
Expand Down Expand Up @@ -78,8 +80,7 @@ exports.config = function (logger, config, cli) {
'avd-id': {
abbr: 'I',
desc: __('the id for the avd'),
hint: __('id'),
default: 7
hint: __('id')
},
/*
'avd-name': {
Expand Down Expand Up @@ -239,14 +240,63 @@ exports.validate = function (logger, config, cli) {

// Set defaults for target Emulator
if (cli.argv.target == 'emulator') {
if (isNaN(parseInt(cli.argv['avd-id']))) {
cli.argv['avd-id'] = 7;
}
if (!cli.argv['avd-skin']) {
cli.argv['avd-skin'] = 'HVGA';
var avdid = parseInt(cli.argv['avd-id']);

// double check and make sure that the avd-id passed (or the default)
// exists as an android target and if not, deal with it vs. bombing
if (isNaN(avdid) || !androidEnv.targets || !androidEnv.targets[avdid]) {
var keys = Object.keys(androidEnv.targets || {}),
name,
skins;

avdid = 0;
for (var c = 0; c < keys.length; c++) {
var target = androidEnv.targets[keys[c]],
api = target['api-level'];

// search for the first api > 10 (Android 2.3.3) which is what titanium requires
if (api >= 10) {
avdid = keys[c];
name = target.name;
skins = target.skins;
break;
}
}

if (avdid) {
// if we found a valid avd id, let's use it but warn the user
if (cli.argv['avd-id']) {
logger.warn(__('AVD ID %s not found. Launching with the AVD ID %s%s.',
(''+cli.argv['avd-id']).cyan, (''+avdid).cyan, name ? ' (' + name + ')' : ''));
} else {
logger.warn(__('No AVD ID specified. Launching with the AVD ID %s%s.',
(''+avdid).cyan, name ? ' (' + name + ')' : ''));
}
cli.argv['avd-id'] = avdid;
var s = skins.length && skins[skins.length - 1];
if (s && skins && skins.indexOf(cli.argv['avd-skin']) == -1) {
logger.warn(__('AVD ID %s does not support skin %s. Launching with the AVD skin %s.',
avdid, (''+cli.argv['avd-skin']).cyan, (''+s).cyan));
cli.argv['avd-skin'] = s;
}
} else {
// if we couldn't find one
if (cli.argv['avd-id']) {
logger.error(__('AVD ID %s not found and no suitable Android SDKs found. Please install Android SDK 2.3.3 or newer.', (''+cli.argv['avd-id']).cyan) + '\n');
} else {
logger.error(__('No suitable Android SDKs found. Please install Android SDK 2.3.3 or newer.', (''+cli.argv['avd-id']).cyan) + '\n');
}
process.exit(1);
}
}

if (!cli.argv['avd-abi']) {
cli.argv['avd-abi'] = androidEnv.targets[cli.argv['avd-id']].abis[0] || androidEnv.targets['7'].abis[0] || 'armeabi';
// check to make sure exists
if (androidEnv.targets && androidEnv.targets[cli.argv['avd-id']]) {
cli.argv['avd-abi'] = androidEnv.targets[cli.argv['avd-id']].abis[0] || androidEnv.targets['7'].abis[0] || 'armeabi';
} else {
logger.warn(__('AVD ID %s not found. Please use %s to specify a valid AVD ID. Ignoring --avd-abi.', cli.argv['avd-id'], '--avd-id'.cyan));
}
}
}

Expand All @@ -264,7 +314,7 @@ exports.validate = function (logger, config, cli) {

cli.argv.keystore = afs.resolvePath(cli.argv.keystore);
if (!afs.exists(cli.argv.keystore) || !fs.statSync(cli.argv.keystore).isFile()) {
logger.error(__('Invalid keystore file "%s"', cli.argv.keystore) + '\n');
logger.error(__('Invalid keystore file: %s', cli.argv.keystore.cyan) + '\n');
process.exit(1);
}

Expand Down

0 comments on commit b1632d5

Please sign in to comment.