definedHooks method
Implementation
(List<DefinedHook>, int?) definedHooks(String root) {
final definedHooksDir = fs.directory(fs.path.join(root, 'hooks'));
if (!definedHooksDir.existsSync()) {
logger.err('No hooks defined');
return (<DefinedHook>[], 1);
}
final dartGlob = Glob('*.dart');
final dartFound = dartGlob.listFileSystemSync(
fs,
root: definedHooksDir.path,
);
logger.detail('Found ${dartFound.length} Dart hook(s)');
for (final entity in dartFound) {
logger.detail(darkGray.wrap(' - ${fs.path.basename(entity.path)}'));
}
final shellGlob = Glob('*.sh');
final shellFound = shellGlob.listFileSystemSync(
fs,
root: definedHooksDir.path,
);
logger.detail('Found ${shellFound.length} Shell hook(s)');
for (final entity in shellFound) {
logger.detail(
darkGray.wrap(
' - ${fs.path.basename(entity.path)} (${entity.runtimeType})',
),
);
}
logger.detail('');
final definedHooks = [
for (final entity in dartFound.followedBy(shellFound))
if (entity is File) DefinedHook(entity.path),
];
if (definedHooks.isEmpty) {
logger.err('No hooks to register');
return ([], 1);
}
final s = definedHooks.length > 1 ? 's' : '';
logger.info(green.wrap('Found ${definedHooks.length} hook$s'));
for (final hook in definedHooks) {
logger.info(darkGray.wrap(' - ${fs.path.basename(hook.fileName)}'));
}
logger.write('\n');
return (definedHooks, null);
}