Skip to content

Commit

Permalink
Improve filtering logic
Browse files Browse the repository at this point in the history
  • Loading branch information
LeoNatan committed Sep 19, 2017
1 parent dbbbc79 commit cd5cc3d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 19 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
##Changelog For AppleSimulatorUtils

##### 19-Sept-2017 16:38

##### 19-Sept-2017
* Improve filtering logic

##### 19-Sept-2017 14:58

* Add `--list` option to utils, with optional filter
* Sort devices by OS version (descending) then by name (ascending)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,16 @@
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--list &quot;iPhone&quot; --maxResults 2"
isEnabled = "NO">
argument = "--list &quot;iPhone 8 Plus, OS=iOS 11.0&quot;"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "--restartSB"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--help"
isEnabled = "YES">
isEnabled = "NO">
</CommandLineArgument>
</CommandLineArguments>
<AdditionalOptions>
Expand Down
25 changes: 10 additions & 15 deletions applesimutils/applesimutils/main.m
Original file line number Diff line number Diff line change
Expand Up @@ -139,33 +139,23 @@ static void restartSpringBoard(NSString* simulatorId)
return simulatorDevices;
}

NSRegularExpression* expr = [NSRegularExpression regularExpressionWithPattern:@"(.*?)(?:,\\s*OS\\s*=\\s*(\\d{1,2}\\.\\d{1,2})\\s*|)$" options:NSRegularExpressionCaseInsensitive error:NULL];
NSRegularExpression* expr = [NSRegularExpression regularExpressionWithPattern:@"(.*?)(?:,\\s*OS\\s*=\\s*(.*)\\s*|)$" options:NSRegularExpressionCaseInsensitive error:NULL];
NSArray<NSTextCheckingResult *> * matches = [expr matchesInString:simulatorFilterRequest options:0 range:NSMakeRange(0, simulatorFilterRequest.length)];

NSPredicate* filterPredicate = nil;

if(matches.count > 0 && matches.firstObject.numberOfRanges == 3)
if(matches.count > 0 && matches.firstObject.numberOfRanges >= 3)
{
NSString* simName = [simulatorFilterRequest substringWithRange:[matches.firstObject rangeAtIndex:1]];
NSRange osRange = [matches.firstObject rangeAtIndex:2];
if(osRange.location != NSNotFound)
{
NSString* osVer = [simulatorFilterRequest substringWithRange:osRange];
filterPredicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@ && os.version ==[cd] %@", simName, osVer];
filterPredicate = [NSPredicate predicateWithFormat:@"name ==[cd] %@ && (os.version == %@ || os.name == %@)", simName, osVer, osVer];
}
else
{
filterPredicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@", simName];
}

NSTextCheckingResult* result = matches.firstObject;
for(NSUInteger i = 0; i < result.numberOfRanges; i++)
{
NSRange range = [result rangeAtIndex:i];
if(range.location != NSNotFound)
{
// NSLog(@"%@", [simulatorFilterRequest substringWithRange:range]);
}
filterPredicate = [NSPredicate predicateWithFormat:@"name ==[cd] %@", simName];
}
}

Expand Down Expand Up @@ -324,6 +314,11 @@ int main(int argc, char** argv) {

NSArray* simulatorDevices = simulatorDevicesList();

if(simulatorDevices == nil)
{
printUsage(@"Error: Unable to obtain a list of simulators", LNLogLevelError);
}

if([settings objectForKey:@"list"] != nil)
{
id value = [settings objectForKey:@"list"];
Expand All @@ -337,7 +332,7 @@ int main(int argc, char** argv) {
NSArray* filteredSimulators = filteredDeviceList(simulatorDevices, simulatorFilterRequest);
if(filteredSimulators == nil)
{
printUsage(@"Error: Unable to list simulators", LNLogLevelError);
printUsage(@"Error: Unable to filter simulators", LNLogLevelError);
}

NSUInteger maxResults = NSUIntegerMax;
Expand Down

0 comments on commit cd5cc3d

Please sign in to comment.