public virtual (FileModel model, bool valid) Load( IDocumentProcessor processor, ImmutableDictionary <string, object> metadata, FileMetadata fileMetadata, FileAndType file) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); try { return(processor.Load(file, metadata), true); } catch (Exception e) { Logger.LogError( $"Unable to load file: {file.File} via processor: {processor.Name}: {e.Message}", code: ErrorCodes.Build.InvalidInputFile); return(null, false); } } }
public virtual (FileModel model, bool valid) Load( IDocumentProcessor processor, ImmutableDictionary <string, object> metadata, FileMetadata fileMetadata, FileAndType file) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); var fileMeta = NeedApplyMetadata() ? ApplyFileMetadata(file.FullPath, metadata, fileMetadata) : ImmutableDictionary <string, object> .Empty; try { return(processor.Load(file, fileMeta), true); } catch (Exception e) { if (!(e is DocumentException)) { Logger.LogError( $"Unable to load file '{file.File}' via processor '{processor.Name}': {e.Message}", code: ErrorCodes.Build.InvalidInputFile); } return(null, false); } } bool NeedApplyMetadata() { return(file.Type != DocumentType.Resource); } }
private static FileModel Load( IDocumentProcessor processor, ImmutableDictionary <string, object> metadata, FileMetadata fileMetadata, FileAndType file, bool canProcessorIncremental, DocumentBuildContext context) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); if (canProcessorIncremental) { var incrementalContext = context.IncrementalBuildContext; ChangeKindWithDependency ck; string fileKey = ((TypeForwardedToRelativePath)file.File).GetPathFromWorkingFolder().ToString(); if (incrementalContext.ChangeDict.TryGetValue(fileKey, out ck)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}, ChangeType {ck}."); if (ck == ChangeKindWithDependency.Deleted) { return(null); } if (ck == ChangeKindWithDependency.None) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Check incremental..."); if (processor.BuildSteps.Cast <ISupportIncrementalBuildStep>().All(step => step.CanIncrementalBuild(file))) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Skip build by incremental."); return(null); } Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Incremental not available."); } } } var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); try { return(processor.Load(file, metadata)); } catch (Exception) { Logger.LogError($"Unable to load file: {file.File} via processor: {processor.Name}."); throw; } } }
private static FileModel Load( IDocumentProcessor processor, ImmutableDictionary <string, object> metadata, FileMetadata fileMetadata, FileAndType file) { using (new LoggerFileScope(file.File)) { Logger.LogVerbose($"Plug-in {processor.Name}: Loading..."); var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); return(processor.Load(file, metadata)); } }
public virtual FileModel Load(IDocumentProcessor processor, ImmutableDictionary <string, object> metadata, FileMetadata fileMetadata, FileAndType file) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); try { return(processor.Load(file, metadata)); } catch (Exception) { Logger.LogError($"Unable to load file: {file.File} via processor: {processor.Name}."); throw; } } }
public virtual FileModel Load(IDocumentProcessor processor, ImmutableDictionary<string, object> metadata, FileMetadata fileMetadata, FileAndType file) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); try { return processor.Load(file, metadata); } catch (Exception) { Logger.LogError($"Unable to load file: {file.File} via processor: {processor.Name}."); throw; } } }
private static FileModel Load( IDocumentProcessor processor, ImmutableDictionary<string, object> metadata, FileMetadata fileMetadata, FileAndType file) { using (new LoggerFileScope(file.File)) { Logger.LogVerbose($"Plug-in {processor.Name}: Loading..."); var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); return processor.Load(file, metadata); } }
private static FileModel Load( IDocumentProcessor processor, ImmutableDictionary<string, object> metadata, FileMetadata fileMetadata, FileAndType file, bool canProcessorIncremental, DocumentBuildContext context) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); if (canProcessorIncremental) { var incrementalContext = context.IncrementalBuildContext; ChangeKindWithDependency ck; string fileKey = ((TypeForwardedToRelativePath)file.File).GetPathFromWorkingFolder().ToString(); if (incrementalContext.ChangeDict.TryGetValue(fileKey, out ck)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}, ChangeType {ck}."); if (ck == ChangeKindWithDependency.Deleted) { return null; } if (ck == ChangeKindWithDependency.None) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Check incremental..."); if (processor.BuildSteps.Cast<ISupportIncrementalBuildStep>().All(step => step.CanIncrementalBuild(file))) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Skip build by incremental."); return null; } Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Incremental not available."); } } } var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); try { return processor.Load(file, metadata); } catch (Exception) { Logger.LogError($"Unable to load file: {file.File} via processor: {processor.Name}."); throw; } } }
private static FileModel Load( IDocumentProcessor processor, ImmutableDictionary <string, object> metadata, FileMetadata fileMetadata, FileAndType file, bool canProcessorIncremental, IDictionary <string, XRefSpec> xrefSpecMap, IEnumerable <ManifestItem> manifestItems, DependencyGraph dg, DocumentBuildContext context) { using (new LoggerFileScope(file.File)) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Loading..."); if (canProcessorIncremental) { ChangeKindWithDependency ck; string fileKey = ((RelativePath)file.File).GetPathFromWorkingFolder().ToString(); if (context.ChangeDict.TryGetValue(fileKey, out ck)) { if (ck == ChangeKindWithDependency.Deleted) { return(null); } if (ck == ChangeKindWithDependency.None) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Check incremental..."); if (((ISupportIncrementalBuild)processor).CanIncrementalBuild(file) && processor.BuildSteps.Cast <ISupportIncrementalBuild>().All(step => step.CanIncrementalBuild(file))) { Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Skip build by incremental."); // restore filemap context.FileMap[fileKey] = ((RelativePath)file.File).GetPathFromWorkingFolder(); // restore xrefspec var specs = xrefSpecMap?.Values?.Where(spec => spec.Href == fileKey); if (specs != null) { foreach (var spec in specs) { context.XRefSpecMap[spec.Uid] = spec; } } // restore manifestitem ManifestItem item = manifestItems?.SingleOrDefault(i => i.SourceRelativePath == file.File); if (item != null) { context.ManifestItems.Add(item); } // restore dependency graph if (dg.HasDependency(fileKey)) { context.DependencyGraph.ReportDependency(fileKey, dg.GetDirectDependency(fileKey)); } return(null); } Logger.LogDiagnostic($"Processor {processor.Name}, File {file.FullPath}: Incremental not available."); } } } var path = Path.Combine(file.BaseDir, file.File); metadata = ApplyFileMetadata(path, metadata, fileMetadata); try { return(processor.Load(file, metadata)); } catch (Exception) { Logger.LogError($"Unable to load file: {file.File} via processor: {processor.Name}."); throw; } } }