findScript method

String? findScript(
  1. String query,
  2. Map<String, String> scripts
)

Find a script by name (supports fuzzy matching)

Implementation

String? findScript(String query, Map<String, String> scripts) {
  // Exact match
  if (scripts.containsKey(query)) return query;

  // Case-insensitive match
  final String lower = query.toLowerCase();
  for (final String key in scripts.keys) {
    if (key.toLowerCase() == lower) return key;
  }

  // Prefix match
  final List<String> prefixMatches = scripts.keys.where((String k) => k.toLowerCase().startsWith(lower)).toList();
  if (prefixMatches.length == 1) return prefixMatches.first;

  // Contains match
  final List<String> containsMatches = scripts.keys.where((String k) => k.toLowerCase().contains(lower)).toList();
  if (containsMatches.length == 1) return containsMatches.first;

  // Abbreviation match (e.g., "br" matches "build_runner", "pi" matches "pod_install")
  final List<String> abbrevMatches = scripts.keys.where((String k) => _matchesAbbreviation(lower, k)).toList();
  if (abbrevMatches.length == 1) return abbrevMatches.first;

  return null;
}