BootstrapCommandConfigs.fromYaml constructor

BootstrapCommandConfigs.fromYaml(
  1. Map<Object?, Object?> yaml, {
  2. required String workspacePath,
})

Implementation

factory BootstrapCommandConfigs.fromYaml(
  Map<Object?, Object?> yaml, {
  required String workspacePath,
}) {
  final runPubGetInParallel = assertKeyIsA<bool?>(
        key: 'runPubGetInParallel',
        map: yaml,
        path: 'command/bootstrap',
      ) ??
      true;

  final runPubGetOffline = assertKeyIsA<bool?>(
        key: 'runPubGetOffline',
        map: yaml,
        path: 'command/bootstrap',
      ) ??
      false;

  final enforceLockfile = assertKeyIsA<bool?>(
        key: 'enforceLockfile',
        map: yaml,
        path: 'command/bootstrap',
      ) ??
      false;

  final environment = assertKeyIsA<Map<Object?, Object?>?>(
    key: 'environment',
    map: yaml,
  ).let(Environment.fromJson);

  final dependencies = assertKeyIsA<Map<Object?, Object?>?>(
    key: 'dependencies',
    map: yaml,
  )?.map(
    (key, value) => MapEntry(
      key.toString(),
      DependencyReference.fromJson(value),
    ),
  );

  final devDependencies = assertKeyIsA<Map<Object?, Object?>?>(
    key: 'dev_dependencies',
    map: yaml,
  )?.map(
    (key, value) => MapEntry(
      key.toString(),
      DependencyReference.fromJson(value),
    ),
  );

  final dependencyOverridePaths = assertListIsA<String>(
    key: 'dependencyOverridePaths',
    map: yaml,
    isRequired: false,
    assertItemIsA: (index, value) => assertIsA<String>(
      value: value,
      index: index,
      path: 'dependencyOverridePaths',
    ),
  );

  final hooksMap = assertKeyIsA<Map<Object?, Object?>?>(
    key: 'hooks',
    map: yaml,
    path: 'command/bootstrap',
  );
  final hooks = hooksMap != null
      ? LifecycleHooks.fromYaml(hooksMap, workspacePath: workspacePath)
      : LifecycleHooks.empty;

  return BootstrapCommandConfigs(
    runPubGetInParallel: runPubGetInParallel,
    runPubGetOffline: runPubGetOffline,
    enforceLockfile: enforceLockfile,
    environment: environment,
    dependencies: dependencies,
    devDependencies: devDependencies,
    dependencyOverridePaths: dependencyOverridePaths
        .map(
          (override) =>
              createGlob(override, currentDirectoryPath: workspacePath),
        )
        .toList(),
    hooks: hooks,
  );
}