loadScriptConfig function

Future<ScriptConfig> loadScriptConfig(
  1. OperatingSystem currentOS,
  2. Directory currentDir
)

Load the current project script config and validate that its content.

Implementation

Future<ScriptConfig> loadScriptConfig(
  final OperatingSystem currentOS,
  final Directory currentDir,
) async {
  final Directory hooksDir = await GitHooksHandler.getCurrentHooksDir();

  if (!hooksDir.existsSync()) {
    throw UnrecoverableException(
      'Git Hooks directory ${hooksDir.path} not found\n'
      'Please run setup tool',
      ExitCode.config.code,
    );
  }

  final ConfigCache configCache = FileConfigCache(hooksDir: hooksDir);

  final ScriptConfig? scriptConfig = await configCache.loadScriptConfig();

  if (scriptConfig == null) {
    throw UnrecoverableException(
      'Script config not found in dir ${hooksDir.path}\n'
      'Please run setup tool',
      ExitCode.config.code,
    );
  }

  scriptConfig.validateConfig(currentOS, currentDir.path, hooksDir.path);

  return scriptConfig;
}