in src/Microsoft.Atlas.CommandLine/Blueprints/BlueprintManager.cs [88:130]
private async Task<IBlueprintPackage> DecorateBlueprintPackage(IBlueprintPackage blueprintPackageCore)
{
var blueprintInfo = new WorkflowInfoDocument();
var blueprintPackage = blueprintPackageCore;
if (blueprintPackage.Exists("readme.md"))
{
var readmeText = blueprintPackageCore.OpenText("readme.md").ReadToEnd();
var readmeDoc = Markdig.Markdown.Parse(readmeText);
var codeBlocks = readmeDoc.OfType<FencedCodeBlock>();
var yamlBlocks = codeBlocks.Where(cb => string.Equals(cb.Info, "yaml", StringComparison.Ordinal));
if (yamlBlocks.Any())
{
var yamlLines = yamlBlocks.SelectMany(yaml => yaml.Lines.Lines);
var yamlText = yamlLines.Aggregate(string.Empty, (a, b) => $"{a}{b}{Environment.NewLine}");
blueprintInfo = _yamlSerializers.YamlDeserializer.Deserialize<WorkflowInfoDocument>(yamlText);
}
blueprintPackage = new GeneratedReadmeBlueprintDecorator(blueprintPackage, string.Empty);
}
foreach (var swaggerInfo in blueprintInfo.swagger.Values)
{
foreach (var decoratorProvider in _decoratorProviders)
{
blueprintPackage = await decoratorProvider.CreateDecorator(swaggerInfo, blueprintPackage);
}
}
foreach (var dependencyInfo in blueprintInfo.workflows.Values)
{
foreach (var decoratorProvider in _decoratorProviders)
{
blueprintPackage = await decoratorProvider.CreateDecorator(dependencyInfo, blueprintPackage);
}
}
return blueprintPackage;
}