splitCommandLine static method
Split a command line string into arguments, respecting quotes.
Implementation
static List<String> splitCommandLine(String line) {
final args = <String>[];
final current = StringBuffer();
var inSingleQuote = false;
var inDoubleQuote = false;
var escaped = false;
for (var i = 0; i < line.length; i++) {
final char = line[i];
if (escaped) {
current.write(char);
escaped = false;
continue;
}
if (char == '\\') {
escaped = true;
continue;
}
if (char == "'" && !inDoubleQuote) {
inSingleQuote = !inSingleQuote;
continue;
}
if (char == '"' && !inSingleQuote) {
inDoubleQuote = !inDoubleQuote;
continue;
}
if (char == ' ' && !inSingleQuote && !inDoubleQuote) {
if (current.isNotEmpty) {
args.add(current.toString());
current.clear();
}
continue;
}
current.write(char);
}
if (current.isNotEmpty) {
args.add(current.toString());
}
return args;
}