getFileExtensionsFromBashCommand function

AnalyticsVerifiedString? getFileExtensionsFromBashCommand(
  1. String command, [
  2. String? simulatedSedEditFilePath
])

Extracts file extensions from a bash command for analytics.

Implementation

AnalyticsVerifiedString? getFileExtensionsFromBashCommand(
  String command, [
  String? simulatedSedEditFilePath,
]) {
  if (!command.contains('.') && simulatedSedEditFilePath == null) return null;

  String? result;
  final seen = <String>{};

  if (simulatedSedEditFilePath != null) {
    final ext = getFileExtensionForAnalytics(simulatedSedEditFilePath);
    if (ext != null) {
      seen.add(ext);
      result = ext;
    }
  }

  for (final subcmd in command.split(_compoundOperatorRegex)) {
    if (subcmd.isEmpty) continue;
    final tokens = subcmd.split(_whitespaceRegex);
    if (tokens.length < 2) continue;

    final firstToken = tokens[0];
    final slashIdx = firstToken.lastIndexOf('/');
    final baseCmd = slashIdx >= 0
        ? firstToken.substring(slashIdx + 1)
        : firstToken;
    if (!_fileCommands.contains(baseCmd)) continue;

    for (var i = 1; i < tokens.length; i++) {
      final arg = tokens[i];
      if (arg.startsWith('-')) continue;
      final ext = getFileExtensionForAnalytics(arg);
      if (ext != null && !seen.contains(ext)) {
        seen.add(ext);
        result = result != null ? '$result,$ext' : ext;
      }
    }
  }

  return result;
}