validate method

Future<ValidateResult> validate(
  1. HookConfigImpl config,
  2. HookOutputImpl output,
  3. PackageLayout packageLayout
)

Implementation

Future<ValidateResult> validate(
  HookConfigImpl config,
  HookOutputImpl output,
  PackageLayout packageLayout,
) async {
  var (errors: errors, success: success) = config is BuildConfigImpl
      ? await validateBuild(config, output)
      : await validateLink(config as LinkConfigImpl, output);

  if (config is BuildConfigImpl) {
    final packagesWithLink =
        (await packageLayout.packagesWithAssets(Hook.link))
            .map((p) => p.name);
    for (final targetPackage in output.assetsForLinking.keys) {
      if (!packagesWithLink.contains(targetPackage)) {
        for (final asset in output.assetsForLinking[targetPackage]!) {
          success &= false;
          errors.add(
            'Asset "${asset.id}" is sent to package "$targetPackage" for'
            ' linking, but that package does not have a link hook.',
          );
        }
      }
    }
  }
  return (errors: errors, success: success);
}