@@ -13,62 +13,69 @@ export class XCode6Simulator implements ISimulator {
13
13
private static DEFAULT_DEVICE_IDENTIFIER = "iPhone-4s" ;
14
14
15
15
16
- private availableDevices : IDictionary < IDevice > ;
16
+ private availableDevices : IDictionary < IDevice [ ] > ;
17
17
18
18
constructor ( ) {
19
19
this . availableDevices = Object . create ( null ) ;
20
20
}
21
21
22
22
public get validDeviceIdentifiers ( ) : string [ ] {
23
- var simDeviceSet = $ . classDefinition . getClassByName ( "SimDeviceSet" ) ;
24
- var devicesInfo : string [ ] = [ ] ;
25
-
26
- if ( simDeviceSet ) {
27
- var deviceSet = simDeviceSet ( "defaultSet" ) ;
28
- var devices = deviceSet ( "availableDevices" ) ;
29
-
30
- var count = devices ( "count" ) ;
31
- for ( var index = 0 ; index < count ; index ++ ) {
32
- var device = devices ( "objectAtIndex" , index ) ;
33
-
34
- var deviceIdentifier = device ( "deviceType" ) ( "identifier" ) . toString ( ) ;
35
- var deviceIdentifierPrefixIndex = deviceIdentifier . indexOf ( XCode6Simulator . DEFAULT_DEVICE_IDENTIFIER ) ;
36
- var deviceIdentifierWithoutPrefix = deviceIdentifier . substring ( deviceIdentifierPrefixIndex + XCode6Simulator . DEVICE_IDENTIFIER_PREFIX . length + 2 ) ;
37
-
38
- var runtimeVersion = device ( "runtime" ) ( "versionString" ) . toString ( ) ;
39
- var deviceInfo = [ util . format ( "Device Identifier: %s" , deviceIdentifierWithoutPrefix ) ,
40
- util . format ( "Runtime Version: %s" , runtimeVersion ) ] . join ( os . EOL ) ;
41
- devicesInfo . push ( deviceInfo + os . EOL ) ;
42
- }
43
- }
23
+ var devices = this . getDevicesInfo ( ) ;
24
+ return _ . map ( devices , device => device . deviceIdentifier ) ;
25
+ }
44
26
45
- return devicesInfo ;
27
+ public get deviceIdentifiersInfo ( ) : string [ ] {
28
+ var devices = this . getDevicesInfo ( ) ;
29
+ return _ . map ( devices , device => util . format ( "Device Identifier: %s. %sRuntime Version: %s %s" , device . fullDeviceIdentifier , os . EOL , device . runtimeVersion , os . EOL ) ) ;
46
30
}
47
31
48
32
public setSimulatedDevice ( config : any ) : void {
49
33
var device = this . getDeviceByIdentifier ( this . deviceIdentifier ) ;
50
34
config ( "setDevice" , device ) ;
51
35
}
52
36
37
+ private getDevicesInfo ( ) : IDevice [ ] {
38
+ var availableDeviceIdentifiers = this . getAvailableDevices ( ) ;
39
+ var keys = _ . keys ( availableDeviceIdentifiers ) ;
40
+ var result : IDevice [ ] = [ ] ;
41
+
42
+ _ . each ( keys , deviceIdentifier => {
43
+ var devices = availableDeviceIdentifiers [ deviceIdentifier ] ;
44
+ _ . each ( devices , device => result . push ( device ) ) ;
45
+ } ) ;
46
+
47
+ return result ;
48
+ }
49
+
53
50
private get deviceIdentifier ( ) : string {
54
51
return options . device || XCode6Simulator . DEFAULT_DEVICE_IDENTIFIER ;
55
52
}
56
53
57
- private getAvailableDevices ( ) : IDictionary < IDevice > {
54
+ private getAvailableDevices ( ) : IDictionary < IDevice [ ] > {
58
55
if ( _ . isEmpty ( this . availableDevices ) ) {
59
56
var deviceSet = $ . classDefinition . getClassByName ( "SimDeviceSet" ) ( "defaultSet" ) ;
60
57
var devices = deviceSet ( "availableDevices" ) ;
61
58
var count = devices ( "count" ) ;
62
59
if ( count > 0 ) {
63
60
for ( var index = 0 ; index < count ; index ++ ) {
64
61
var device = devices ( "objectAtIndex" , index ) ;
65
- var deviceTypeIdentifier = device ( "deviceType" ) ( "identifier" ) . toString ( ) ;
62
+
63
+ var deviceIdentifier = device ( "deviceType" ) ( "identifier" ) . toString ( ) ;
64
+ var deviceIdentifierPrefixIndex = deviceIdentifier . indexOf ( XCode6Simulator . DEVICE_IDENTIFIER_PREFIX ) ;
65
+ var deviceIdentifierWithoutPrefix = deviceIdentifier . substring ( deviceIdentifierPrefixIndex + XCode6Simulator . DEVICE_IDENTIFIER_PREFIX . length + 1 ) ;
66
+
66
67
var runtimeVersion = device ( "runtime" ) ( "versionString" ) . toString ( ) ;
67
- this . availableDevices [ deviceTypeIdentifier ] = {
68
+
69
+ if ( ! this . availableDevices [ deviceIdentifier ] ) {
70
+ this . availableDevices [ deviceIdentifier ] = [ ] ;
71
+ }
72
+
73
+ this . availableDevices [ deviceIdentifier ] . push ( {
68
74
device : device ,
69
- deviceTypeIdentifier : deviceTypeIdentifier ,
75
+ deviceIdentifier : deviceIdentifierWithoutPrefix ,
76
+ fullDeviceIdentifier : this . buildFullDeviceIdentifier ( deviceIdentifier ) ,
70
77
runtimeVersion : runtimeVersion
71
- } ;
78
+ } ) ;
72
79
}
73
80
}
74
81
}
@@ -77,15 +84,19 @@ export class XCode6Simulator implements ISimulator {
77
84
}
78
85
79
86
private getDeviceByIdentifier ( deviceIdentifier : string ) : any {
80
- var fullDeviceIdentifier = util . format ( "%s.%s" , XCode6Simulator . DEVICE_IDENTIFIER_PREFIX , deviceIdentifier ) ;
81
87
var availableDevices = this . getAvailableDevices ( ) ;
82
88
if ( ! _ . isEmpty ( availableDevices ) ) {
89
+ var fullDeviceIdentifier = this . buildFullDeviceIdentifier ( deviceIdentifier ) ;
83
90
var selectedDevice = availableDevices [ fullDeviceIdentifier ] ;
84
91
if ( selectedDevice ) {
85
- return selectedDevice . device ;
92
+ return selectedDevice [ 0 ] . device ;
86
93
}
87
94
}
88
95
89
96
errors . fail ( "Unable to find device with identifier " , deviceIdentifier ) ;
90
97
}
98
+
99
+ private buildFullDeviceIdentifier ( deviceIdentifier : string ) : string {
100
+ return util . format ( "%s.%s" , XCode6Simulator . DEVICE_IDENTIFIER_PREFIX , deviceIdentifier ) ;
101
+ }
91
102
}
0 commit comments