dependenciesGenerator top-level property
Implementation
final FigGenerator dependenciesGenerator = FigGenerator(
trigger: {'on': 'change'},
script: (List<String> tokens) {
if (tokens.contains('-g') || tokens.contains('--global')) {
return ['bash', '-c', 'ls -1 \$(npm root -g)'];
}
return ['bash', '-c', 'cat \$(npm prefix)/package.json'];
},
postProcess: (String out, [List<String>? tokens]) {
if (tokens != null &&
(tokens.contains('-g') || tokens.contains('--global'))) {
return out
.split('\n')
.where((s) => s.trim().isNotEmpty)
.map((name) => FigSuggestion(
name: name.trim(),
icon: '📦',
description: 'Global dependency',
))
.toList();
}
try {
final packageContent = jsonDecode(out) as Map<String, dynamic>;
final dependencies =
packageContent['dependencies'] as Map<String, dynamic>? ?? {};
final devDependencies =
packageContent['devDependencies'] as Map<String, dynamic>?;
final optionalDependencies =
packageContent['optionalDependencies'] as Map<String, dynamic>? ?? {};
final all = <String, dynamic>{...dependencies};
if (devDependencies != null) all.addAll(devDependencies);
all.addAll(optionalDependencies);
final listed = tokens?.toSet() ?? <String>{};
return all.keys
.where((pkgName) => !listed.contains(pkgName))
.map((pkgName) {
String desc = 'dependency';
if (optionalDependencies.containsKey(pkgName))
desc = 'optionalDependency';
else if (devDependencies != null &&
devDependencies.containsKey(pkgName)) desc = 'devDependency';
return FigSuggestion(
name: pkgName,
icon: '📦',
description: desc,
);
}).toList();
} catch (_) {
return <FigSuggestion>[];
}
},
);