thenEnumerateRequest method

FutureDanger<Object, Exception> thenEnumerateRequest(
  1. EnumerateRequest request
)

Implementation

FutureDanger thenEnumerateRequest(EnumerateRequest request) async {

    final log = Log(classLocation: runtimeType, functionLocation: 'thenEnumerateRequest');

    final fileResult = await FileModel.fromLocationAndName(request.location, request.name);
    log.add(fileResult);
    if (fileResult is! Success<FileModel, FileSystemException>) return Failure(CitrusEnforcerExceptionA(), log);

    final decodeResult = fileResult.wrapped.decode();
    log.add(decodeResult);
    if (decodeResult is! Success<String, FormatException>) return Failure(CitrusEnforcerExceptionB(), log);

    final yamlDocumentResult = BpriverYaml.parseYamlStringAsSingleYamlDocument(decodeResult.wrapped);
    log.add(yamlDocumentResult);
    if (yamlDocumentResult is! Success<YamlDocument, BpriverYamlExceptionA>) return Failure(yamlDocumentResult.asException, log);

    final yamlMapResult = BpriverYaml.parseYamlDocumentAsT<YamlMap>(yamlDocumentResult.wrapped);
    log.add(yamlMapResult);
    if (yamlMapResult is! Success<YamlMap, BpriverYamlExceptionJ>) return Failure(yamlMapResult.asException, log);

    final enumerationFileSettingResult = EnumerationFileSetting.fromYamlMap(yamlMapResult.wrapped);
    log.add(enumerationFileSettingResult);
    if (enumerationFileSettingResult is! Success<EnumerationFileSetting, BpriverYamlException>) return Failure(enumerationFileSettingResult.asException, log);

    final generateCommandListResult = enumerationFileSettingResult.wrapped.getGenerateCommandList();
    log.add(generateCommandListResult);
    if (generateCommandListResult is! Success<List<Chain>, ChainException>) return Failure(generateCommandListResult.asException, log);

    final List<GenerateRequest> list = [];

    for (final i in generateCommandListResult.wrapped) {

        final result = GenerateRequest.fromChain(i);
        log.add(result);
        if (result is! Success<GenerateRequest, CitrusRequestExceptionA>) return Failure(result.asException, log);

        list.add(result.wrapped);

    }

    // log が取れない.
    for (final i in list) {

        final result = await thenGenerateRequest(i);

        switch (result) {
        case Failure(): return result;
        case Success(): ;
        }

    }

    return Success(Complete([EnumerateRequest.CHAIN_HEAD]), log);

}