createCLIsGenerator top-level property

FigGenerator createCLIsGenerator
final

Implementation

final FigGenerator createCLIsGenerator = FigGenerator(
  script: (List<String> context) {
    if (context.isEmpty || context.last.isEmpty) return null;
    final searchTerm = 'create-${context.last}';
    return [
      'curl',
      '-s',
      '-H',
      'Accept: application/json',
      'https://api.npms.io/v2/search?q=$searchTerm&size=20',
    ];
  },
  cache: FigCache(
    ttl: 100 * 24 * 60 * 60 * 3, // 3 days
  ),
  postProcess: (String out, [List<String>? tokens]) {
    try {
      final jsonData = jsonDecode(out) as Map<String, dynamic>;
      final results = jsonData['results'] as List<dynamic>?;

      if (results == null) return <FigSuggestion>[];

      return results
          .map<FigSuggestion?>((item) {
            final packageData = (item as Map<String, dynamic>)['package']
                as Map<String, dynamic>?;
            if (packageData == null) return null;
            final packageName = packageData['name']?.toString() ?? '';
            final description = packageData['description']?.toString() ?? '';
            return FigSuggestion(
              name: packageName.startsWith('create-')
                  ? packageName.substring(7)
                  : packageName,
              description: description,
              icon: '⚡',
            );
          })
          .whereType<FigSuggestion>()
          .toList();
    } catch (e) {
      print('Error parsing create CLI results: $e');
      return <FigSuggestion>[];
    }
  },
);