В этом нам поможет библиотека git_hooks. Ее нужно активировать глобально.
dart pub global activate git_hooks
Далее создать место, где будут храниться наши хуки внутри нашего проекта.
git_hooks create bin/git_hooks.dart
Потом необходимо создать файл
bin/main.dart со следующим содержанием:void main() async{
GitHooks.init(targetPath: "bin/git_hooks.dart");
}И выполнить команду, которая все для нас подготовит
dart bin/main.dart
После чего мы можем приступить к написанию нашего хука. Заполним наш файл
git_hooks.dart:void main(List arguments) {
Map<Git, UserBackFun> params = {
Git.preCommit: _formatCode,
};
GitHooks.call(arguments, params);
}
Future<bool> _formatCode() async {
try {
print(‘Running dart format’);
ProcessResult result = await Process.run(‘dart format .’, [‘bin’]);
print(result.stdout);
if (result.exitCode != 0) return false;
} catch (e) {
return false;
}
return true;
}Теперь наш хук должен заработать.
На самом деле, такое решение вполне применимо, но лучше использовать стандартные хуки на Bash.
Делитесь в чате, попробовали ли бы использовать такие хуки?
