stripSafeWrappers function

String stripSafeWrappers(
  1. String command
)

Strip safe wrappers and env vars from a command for permission checking.

Implementation

String stripSafeWrappers(String command) {
  var cmd = command.trim();

  // Strip leading env vars (FOO=bar command)
  while (true) {
    final envMatch = RegExp(r'^(\w+)=\S+\s+(.+)').firstMatch(cmd);
    if (envMatch == null) break;
    final varName = envMatch.group(1)!;
    if (!_safeEnvVars.contains(varName)) break;
    cmd = envMatch.group(2)!.trim();
  }

  // Strip safe wrappers
  while (true) {
    final parts = cmd.split(RegExp(r'\s+'));
    if (parts.isEmpty) break;
    if (!_safeWrappers.contains(parts.first)) break;

    // Skip flags of the wrapper command
    var i = 1;
    while (i < parts.length && parts[i].startsWith('-')) {
      i++;
      // Skip flag values for flags that take arguments
      if (i < parts.length && !parts[i].startsWith('-')) {
        i++;
      }
    }
    cmd = parts.sublist(i).join(' ').trim();
    if (cmd.isEmpty) break;
  }

  return cmd;
}