private async Task Validate(List <string> errors) { if (SourceFile != null && !MarkdownProjectRoot.FileExists(SourceFile)) { errors.Add($"File not found: {SourceFile.Value}"); } if (string.IsNullOrEmpty(Package) && Project == null) { errors.Add("No project file or package specified"); } if (Package != null) { try { var package = await PackageRegistry.Find <IPackage>(Package); } catch (PackageNotFoundException e) { errors.Add(e.Message); return; } } if (Project != null) { var packageName = GetPackageNameFromProjectFile(Project); if (packageName == null) { errors.Add($"No project file could be found at path {MarkdownProjectRoot.GetFullyQualifiedPath(new RelativeDirectoryPath("."))}"); } } }
private string GetDestinationFileAbsolutePath() { var file = DestinationFile ?? SourceFile; return(file == null ? string.Empty : MarkdownProjectRoot .GetFullyQualifiedPath(file) .FullName); }
public override async Task <CodeBlockContentFetchResult> TryGetExternalContent() { string content = null; var errors = new List <string>(); await Validate(errors); if (!errors.Any()) { if (SourceFile == null) { return(CodeBlockContentFetchResult.None); } content = MarkdownProjectRoot.ReadAllText(SourceFile); if (string.IsNullOrWhiteSpace(Region)) { return(errors.Any() ? CodeBlockContentFetchResult.Failed(errors) : CodeBlockContentFetchResult.Succeeded(content)); } var sourceText = SourceText.From(content); var sourceFileAbsolutePath = GetSourceFileAbsolutePath(); var buffers = sourceText.ExtractBuffers(sourceFileAbsolutePath) .Where(b => b.Id.RegionName == Region) .ToArray(); if (buffers.Length == 0) { errors.Add($"Region \"{Region}\" not found in file {sourceFileAbsolutePath}"); } else if (buffers.Length > 1) { errors.Add($"Multiple regions found: {Region}"); } else { content = buffers[0].Content; } } return(errors.Any() ? CodeBlockContentFetchResult.Failed(errors) : CodeBlockContentFetchResult.Succeeded(content)); }
private string GetSourceFileAbsolutePath() { return(MarkdownProjectRoot.GetFullyQualifiedPath(SourceFile).FullName); }