thenEnumerateRequest method
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);
}