splitCommandLine function
Implementation
List<String> splitCommandLine(String input) {
final args = <String>[];
final current = StringBuffer();
String? quote;
var escaping = false;
for (var i = 0; i < input.length; i++) {
final char = input[i];
if (escaping) {
current.write(char);
escaping = false;
continue;
}
if (char == '\\') {
escaping = true;
continue;
}
if (quote != null) {
if (char == quote) {
quote = null;
} else {
current.write(char);
}
continue;
}
if (char == '"' || char == "'") {
quote = char;
continue;
}
if (char.trim().isEmpty) {
if (current.length > 0) {
args.add(current.toString());
current.clear();
}
continue;
}
current.write(char);
}
if (escaping) {
current.write('\\');
}
if (quote != null) {
throw const FormatException('Unterminated quoted string');
}
if (current.length > 0) {
args.add(current.toString());
}
return args;
}