internal void Save(string baseDir) { if (IntermediateModelManifestFile == null) { IntermediateModelManifestFile = IncrementalUtility.CreateRandomFileName(baseDir); } IncrementalUtility.SaveIntermediateFile(Path.Combine(baseDir, IntermediateModelManifestFile), IntermediateModelManifest); }
public void SaveManifest(string baseDir) { if (ManifestItemsFile == null) { ManifestItemsFile = IncrementalUtility.CreateRandomFileName(baseDir); } IncrementalUtility.SaveIntermediateFile(Path.Combine(baseDir, ManifestItemsFile), ManifestItems); }
public static IncrementalBuildContext Create(DocumentBuildParameters parameters, BuildInfo cb, BuildInfo lb, string intermediateFolder, string markdownServiceContextHash) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (cb == null) { throw new ArgumentNullException(nameof(cb)); } if (intermediateFolder == null) { throw new ArgumentNullException(nameof(intermediateFolder)); } var baseDir = Path.Combine(intermediateFolder, cb.DirectoryName); var lastBaseDir = lb != null?Path.Combine(intermediateFolder, lb.DirectoryName) : null; var lastBuildStartTime = lb?.BuildStartTime; var buildInfoIncrementalStatus = GetBuildInfoIncrementalStatus(cb, lb, parameters.ForceRebuild); var lbv = lb?.Versions?.SingleOrDefault(v => v.VersionName == parameters.VersionName); var cbv = new BuildVersionInfo() { BaseDir = Path.GetFullPath(Environment.ExpandEnvironmentVariables(baseDir)), VersionName = parameters.VersionName, ConfigHash = ComputeConfigHash(parameters, markdownServiceContextHash), FileMetadataHash = ComputeFileMetadataHash(parameters.FileMetadata), FileMetadata = parameters.FileMetadata, AttributesFile = IncrementalUtility.CreateRandomFileName(baseDir), DependencyFile = IncrementalUtility.CreateRandomFileName(baseDir), ManifestFile = IncrementalUtility.CreateRandomFileName(baseDir), OutputFile = IncrementalUtility.CreateRandomFileName(baseDir), XRefSpecMapFile = IncrementalUtility.CreateRandomFileName(baseDir), FileMapFile = IncrementalUtility.CreateRandomFileName(baseDir), BuildMessageFile = IncrementalUtility.CreateRandomFileName(baseDir), TocRestructionsFile = IncrementalUtility.CreateRandomFileName(baseDir), }; if (parameters.FileMetadata != null) { cbv.FileMetadataFile = IncrementalUtility.CreateRandomFileName(baseDir); } cb.Versions.Add(cbv); var context = new IncrementalBuildContext(baseDir, lastBaseDir, lastBuildStartTime, buildInfoIncrementalStatus, parameters, cbv, lbv) { IsTemplateUpdated = cb.TemplateHash != lb?.TemplateHash }; if (context.IsTemplateUpdated) { Logger.LogVerbose($"Cannot build incrementally in link phase because template changed (new: {cb.TemplateHash} vs. old: {lb?.TemplateHash ?? "null"}). Will apply templates and post process all files", code: InfoCodes.IncrementalBuildReason.TemplateChanged); } context.InitDependency(); context.InitFileAttributes(); context.InitChanges(); return(context); }
public void SaveManifest(string baseDir) { var expanded = Path.GetFullPath(Environment.ExpandEnvironmentVariables(baseDir)); if (ManifestItemsFile == null) { ManifestItemsFile = IncrementalUtility.CreateRandomFileName(expanded); } IncrementalUtility.SaveIntermediateFile(Path.Combine(expanded, ManifestItemsFile), ManifestItems); }
internal void Save(string baseDir) { if (PostProcessOutputsFile == null) { PostProcessOutputsFile = IncrementalUtility.CreateRandomFileName(baseDir); } if (MessageInfoFile == null) { MessageInfoFile = IncrementalUtility.CreateRandomFileName(baseDir); } IncrementalUtility.SaveIntermediateFile(Path.Combine(baseDir, PostProcessOutputsFile), PostProcessOutputs); using var sw = new StreamWriter(Path.Combine(baseDir, MessageInfoFile), false, UTF8); MessageInfo.Save(sw); }
public static IncrementalBuildContext Create(DocumentBuildParameters parameters, BuildInfo cb, BuildInfo lb, string intermediateFolder, string markdownServiceContextHash) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (cb == null) { throw new ArgumentNullException(nameof(cb)); } if (intermediateFolder == null) { throw new ArgumentNullException(nameof(intermediateFolder)); } var baseDir = Path.Combine(intermediateFolder, cb.DirectoryName); var lastBaseDir = lb != null?Path.Combine(intermediateFolder, lb.DirectoryName) : null; var lastBuildStartTime = lb?.BuildStartTime; var buildInfoIncrementalStatus = GetBuildInfoIncrementalStatus(cb, lb); var lbv = lb?.Versions?.SingleOrDefault(v => v.VersionName == parameters.VersionName); var cbv = new BuildVersionInfo() { BaseDir = Path.GetFullPath(Environment.ExpandEnvironmentVariables(baseDir)), VersionName = parameters.VersionName, ConfigHash = ComputeConfigHash(parameters, markdownServiceContextHash), AttributesFile = IncrementalUtility.CreateRandomFileName(baseDir), DependencyFile = IncrementalUtility.CreateRandomFileName(baseDir), ManifestFile = IncrementalUtility.CreateRandomFileName(baseDir), OutputFile = IncrementalUtility.CreateRandomFileName(baseDir), XRefSpecMapFile = IncrementalUtility.CreateRandomFileName(baseDir), FileMapFile = IncrementalUtility.CreateRandomFileName(baseDir), BuildMessageFile = IncrementalUtility.CreateRandomFileName(baseDir), TocRestructionsFile = IncrementalUtility.CreateRandomFileName(baseDir), }; cb.Versions.Add(cbv); var context = new IncrementalBuildContext(baseDir, lastBaseDir, lastBuildStartTime, buildInfoIncrementalStatus, parameters, cbv, lbv) { IsTemplateUpdated = (cb.TemplateHash != lb?.TemplateHash) }; context.InitDependency(); context.InitFileAttributes(); context.InitChanges(); return(context); }
public static IncrementalBuildContext Create(DocumentBuildParameters parameters, BuildInfo cb, BuildInfo lb, string intermediateFolder, string markdownServiceContextHash) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (cb == null) { throw new ArgumentNullException(nameof(cb)); } if (intermediateFolder == null) { throw new ArgumentNullException(nameof(intermediateFolder)); } var baseDir = Path.Combine(intermediateFolder, cb.DirectoryName); var lastBaseDir = lb != null?Path.Combine(intermediateFolder, lb.DirectoryName) : null; var lastBuildStartTime = lb?.BuildStartTime; var canBuildInfoIncremental = CanBuildInfoIncremental(cb, lb); var lbv = lb?.Versions?.SingleOrDefault(v => v.VersionName == parameters.VersionName); var cbv = new BuildVersionInfo { VersionName = parameters.VersionName, ConfigHash = ComputeConfigHash(parameters, markdownServiceContextHash), AttributesFile = IncrementalUtility.CreateRandomFileName(baseDir), DependencyFile = IncrementalUtility.CreateRandomFileName(baseDir), ManifestFile = IncrementalUtility.CreateRandomFileName(baseDir), OutputFile = IncrementalUtility.CreateRandomFileName(baseDir), XRefSpecMapFile = IncrementalUtility.CreateRandomFileName(baseDir), FileMapFile = IncrementalUtility.CreateRandomFileName(baseDir), BuildMessageFile = IncrementalUtility.CreateRandomFileName(baseDir), Attributes = ComputeFileAttributes(parameters, lbv?.Dependency), Dependency = ConstructDependencyGraphFromLast(lbv?.Dependency), }; cb.Versions.Add(cbv); var context = new IncrementalBuildContext(baseDir, lastBaseDir, lastBuildStartTime, canBuildInfoIncremental, parameters, cbv, lbv); context.InitChanges(); return(context); }
public ProcessorInfo CreateProcessorInfo(IDocumentProcessor processor) { var cpi = new ProcessorInfo { Name = processor.Name, IncrementalContextHash = ((ISupportIncrementalDocumentProcessor)processor).GetIncrementalContextHash(), }; foreach (var step in processor.BuildSteps) { cpi.Steps.Add(new ProcessorStepInfo { Name = step.Name, IncrementalContextHash = ((ISupportIncrementalBuildStep)step).GetIncrementalContextHash(), ContextInfoFile = (step is ICanTraceContextInfoBuildStep) ? IncrementalUtility.CreateRandomFileName(BaseDir) : null, }); } lock (_sync) { CurrentBuildVersionInfo.Processors.Add(cpi); } return(cpi); }