in src/configuration.ts [176:235]
function parse(
configurationContext: ConfigurationContext,
configFilePath: File.AbsoluteFilePath,
contents: File.Contents,
): Either.Either<Error.Error[], GenerationConfig> {
const parsedJson = parseJson(
File.getContents(contents),
'Configuration file is malformed and unparseable',
);
const baseClassEither = Either.map(parsedJsonToBaseClass, parsedJson);
const defaultIncludesEither = Either.map(
parsedJsonToDefaultIncludes,
parsedJson,
);
const defaultExcludesEither = Either.map(
parsedJsonToDefaultExcludesMap,
parsedJson,
);
const diagnosticIgnoresEither = Either.map(
parsedJsonToDiagnosticIgnores,
parsedJson,
);
const pluginCollectionEither = Either.map(
(json) =>
parsedJsonToPluginCollectionInfo(configurationContext.basePlugins, json),
parsedJson,
);
const scriptConfigEither = Either.map(
(pluginCollection) =>
scriptConfigFromPluginCollectionInfo(configFilePath, pluginCollection),
pluginCollectionEither,
);
return Either.mbind(function (baseClass: ObjC.BaseClass) {
return Either.mbind(function (pluginConfigs: List.List<PluginConfig>) {
return Either.mbind(function (diagnosticIgnores: List.List<string>) {
return Either.mbind(function (defaultIncludes: List.List<string>) {
return Either.map(function (
defaultExcludesMap: Map.Map<string, string>,
): GenerationConfig {
const combinedIncludes = includesWithAdditionalIncludes(
configurationContext.baseIncludes,
defaultIncludes,
);
return {
baseClassName: baseClass.className,
baseClassLibraryName: baseClass.libraryName,
diagnosticIgnores: diagnosticIgnores,
pluginConfigs: pluginConfigs,
defaultIncludes: includesApplyingExcludesMap(
combinedIncludes,
defaultExcludesMap,
),
};
},
defaultExcludesEither);
}, defaultIncludesEither);
}, diagnosticIgnoresEither);
}, scriptConfigEither);
}, baseClassEither);
}