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);
            }
        }
Ejemplo n.º 2
0
 public ITemplate GenerateFromPath(string path)
 {
     return(_pathCache.GetOrAdd(path, () => _other.GenerateFromPath(path)));
 }