in github-label-notifier/symbolizer/lib/bot.dart [52:136]
static BotCommand parseCommand(int issueNumber, String text) {
final command = text.split('\n').first;
if (!isCommand(command)) {
return null;
}
final issueNumberStr = issueNumber.toString();
var symbolizeThis = false;
final worklist = <String>{};
String engineHash;
String flutterVersion;
String os;
String arch;
String mode;
String format;
var force = false;
// Command is just a sequence of keywords which specify which comments
// to symbolize and which symbols to use.
for (var keyword in command.split(' ').skip(1)) {
switch (keyword) {
case 'this':
symbolizeThis = true;
break;
case 'x86':
case 'arm':
case 'arm64':
case 'x64':
arch = keyword;
break;
case 'debug':
case 'profile':
case 'release':
mode = keyword;
break;
case 'internal':
format = 'internal';
break;
case 'force':
force = true;
break;
case 'ios':
os = 'ios';
break;
default:
// Check if this keyword is a link to an comment on this issue.
var m = _commentLinkPattern.firstMatch(keyword);
if (m != null) {
if (m.namedGroup('issueNumber') == issueNumberStr) {
worklist.add(m.namedGroup('ref'));
}
break;
}
// Check if this keyword is an engine hash.
m = _engineHashPattern.firstMatch(keyword);
if (m != null) {
engineHash = m.namedGroup('sha');
break;
}
m = _flutterHashOrVersionPattern.firstMatch(keyword);
if (m != null) {
flutterVersion = m.namedGroup('version');
break;
}
break;
}
}
return BotCommand(
symbolizeThis: symbolizeThis,
worklist: worklist,
overrides: SymbolizationOverrides(
arch: arch,
engineHash: engineHash,
flutterVersion: flutterVersion,
mode: mode,
os: os,
force: force,
format: format,
),
);
}