existingUsersandGroups top-level property

FigGenerator existingUsersandGroups
final

Implementation

final FigGenerator existingUsersandGroups = FigGenerator(
  trigger: ':',
  getQueryTerm: ':',
  script: (List<String> tokens) {
    final colonAdded = tokens.any((token) => token.contains(':'));
    if (colonAdded) {
      return ['bash', '-c', "dscl . -list /Groups PrimaryGroupID | tr -s ' '| sort -r"];
    } else {
      return ['bash', '-c', "dscl . -list /Users UniqueID | tr -s ' '| sort -r"];
    }
  },
  postProcess: (String out, [List<String>? tokens]) {
    final colonAdded = tokens?.any((token) => token.contains(':')) ?? false;
    final nFlagUsed = tokens?.any((token) => RegExp(r'^-.*n.*').hasMatch(token)) ?? false;

    return out.split('\n').map((line) {
      final parts = line.split(' ');
      if (parts.length < 2) return null;

      final name = parts[0];
      final id = parts[1];

      return FigSuggestion(
        name: nFlagUsed ? id : name,
        description: colonAdded
            ? 'Group - ${nFlagUsed ? name : 'gid: $id'}'
            : 'User - ${nFlagUsed ? name : 'uid: $id'}',
        icon: colonAdded ? '👥' : '👤',
        priority: 90,
      );
    }).whereType<FigSuggestion>().toList();
  },
);