function getObjectSpecCreationContext()

in src/object-specs.ts [191:235]


function getObjectSpecCreationContext(
  valueObjectConfigPathFuture: Promise.Future<File.AbsoluteFilePath | null>,
  configurationContext: Configuration.ConfigurationContext,
  parsedArgs: CommandLine.Arguments,
): Promise.Future<Either.Either<Error.Error[], ObjectSpecCreationContext>> {
  return Promise.mbind(function (
    maybePath: File.AbsoluteFilePath | null,
  ): Promise.Future<Either.Either<Error.Error[], ObjectSpecCreationContext>> {
    const configFuture: Promise.Future<
      Either.Either<Error.Error[], Configuration.GenerationConfig>
    > = Configuration.generateConfig(maybePath, configurationContext);
    return Promise.map(function (
      either: Either.Either<Error.Error[], Configuration.GenerationConfig>,
    ) {
      return Either.mbind(function (
        configuration: Configuration.GenerationConfig,
      ): Either.Either<Error.Error[], ObjectSpecCreationContext> {
        const pluginsEither = pluginsFromPluginConfigs(
          configuration.pluginConfigs,
        );
        return Either.map(function (
          plugins: List.List<ObjectSpec.Plugin>,
        ): ObjectSpecCreationContext {
          return {
            baseClassName: configuration.baseClassName,
            baseClassLibraryName: configuration.baseClassLibraryName,
            diagnosticIgnores: configuration.diagnosticIgnores,
            plugins: plugins,
            defaultIncludes: List.fromArray<string>(
              PluginInclusionUtils.includesContainingDefaultIncludes(
                parsedArgs.includes,
                parsedArgs.excludes,
                configuration.defaultIncludes,
              ),
            ),
          };
        },
        pluginsEither);
      },
      either);
    },
    configFuture);
  },
  valueObjectConfigPathFuture);
}