export function generate()

in src/object-specs.ts [251:313]


export function generate(
  directoryRunFrom: string,
  extension: string,
  configFileName: string,
  optionalConfigPath: string | undefined,
  configurationContext: Configuration.ConfigurationContext,
  parsedArgs: CommandLine.Arguments,
): Promise.Future<List.List<WriteFileUtils.ConsoleOutputResults>> {
  const promises = parsedArgs.givenPaths.map((givenPath) => {
    const requestedPath: File.AbsoluteFilePath =
      PathUtils.getAbsolutePathFromDirectoryAndAbsoluteOrRelativePath(
        File.getAbsoluteFilePath(directoryRunFrom),
        givenPath,
      );
    const outputPath: File.AbsoluteFilePath | null = outputDirectory(
      directoryRunFrom,
      parsedArgs.outputPath,
    );

    const configPath = optionalConfigPath
      ? FileFinder.findConfigAtPath(
          File.getAbsoluteFilePath(optionalConfigPath),
        )
      : FileFinder.searchForConfig(configFileName, requestedPath);

    const valueObjectCreationContextFuture = getObjectSpecCreationContext(
      configPath,
      configurationContext,
      parsedArgs,
    );

    const readFileSequence = ReadFileUtils.loggedSequenceThatReadsFiles(
      requestedPath,
      extension,
    );

    const parsedSequence = LoggingSequenceUtils.mapLoggedSequence(
      readFileSequence,
      parseValues,
    );

    const options: GenerationOptions = {
      outputPath: outputPath,
      outputFlags: parsedArgs.outputFlags,
    };

    const pluginProcessedSequence = LoggingSequenceUtils.mapLoggedSequence(
      parsedSequence,
      (context) =>
        processObjectSpecCreationRequest(
          options,
          valueObjectCreationContextFuture,
          context,
        ),
    );

    return WriteFileUtils.evaluateObjectFileWriteRequestSequence(
      parsedArgs,
      pluginProcessedSequence,
    );
  });
  return Promise.all(List.fromArray(promises));
}