protected async void OnTriggered(DockerGenConfiguration configuration) { var containers = await GetContainers(configuration); var writer = new SimpleWriter(); var template = _templateFactory.GenerateFromPath(configuration.Template); var containerInspections = containers .Select(c => c.ID) .Select(containerId => Client.Containers.InspectContainerAsync(containerId).Result) .ToList(); await template.Execute(containerInspections, writer); var generatedContents = writer.Written; var targetFile = configuration.Destination; if (!Path.IsPathRooted(targetFile)) { targetFile = Path.Combine(Directory.GetCurrentDirectory(), targetFile); } var currentFileContents = ""; if (File.Exists(targetFile)) { currentFileContents = File.ReadAllText(targetFile); } if (currentFileContents == "" || currentFileContents != generatedContents) { //Change detected lets write the contents File.Delete(targetFile); File.Create(targetFile); await File.WriteAllTextAsync(targetFile, generatedContents); await OnChanged(configuration); } }
public ITemplate GenerateFromPath(string path) { return(_pathCache.GetOrAdd(path, () => _other.GenerateFromPath(path))); }