private async Task ProcessContainerContainerAsync( int stageId, IReleaseActionContainer <IReleaseWorkflowBlock> container, string targetPath) { this.ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(container, ContainerStart)); var folderFormat = container.DisplayNameIsMeaningful ? this.meaningfulDisplayNameFolderFormat : this.meaninglessDisplayNameFolderFormat; var newPath = Path.Combine( targetPath, string.Format(folderFormat, container.Sequence.ToString("00"), container.ItemType, container.ValidFileName)); this.fs.CreateDirectory(newPath); foreach (var subcontainer in container.SubItems.OfType <IReleaseActionContainer <IReleaseWorkflowBlock> >() .Where( subcontainer => subcontainer.ItemType != BlockType.Rollback && subcontainer.ItemType != BlockType.RollbackAlways)) { // ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(subcontainer, ContainerStart)); await this.ProcessContainerContainerAsync(stageId, subcontainer, newPath); // ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(subcontainer, ContainerEnd)); } await this.ProcessReleaseActionContainerAsync(stageId, container.SubItems?.OfType <ReleaseAction>(), newPath); this.ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(container, ContainerEnd)); }
private static GenerationEventArgs GetContainerGenerationArgs( IReleaseActionContainer <IReleaseWorkflowBlock> container, GenerationEventType eventType) { return(new GenerationEventArgs { BlockType = container.ItemType, DisplayName = container.DisplayName, Sequence = container.Sequence, IsEnabled = true, IsContainer = true, GenerationEventType = eventType }); }
private async Task ProcessContainerContainerAsync( int stageId, IReleaseActionContainer<IReleaseWorkflowBlock> container, string targetPath) { this.ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(container, ContainerStart)); var folderFormat = container.DisplayNameIsMeaningful ? this.meaningfulDisplayNameFolderFormat : this.meaninglessDisplayNameFolderFormat; var newPath = Path.Combine( targetPath, string.Format(folderFormat, container.Sequence, container.ItemType, container.ValidFileName)); this.fs.CreateDirectory(newPath); foreach (var subcontainer in container.SubItems.OfType<IReleaseActionContainer<IReleaseWorkflowBlock>>() .Where( subcontainer => subcontainer.ItemType != BlockType.Rollback && subcontainer.ItemType != BlockType.RollbackAlways)) { // ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(subcontainer, ContainerStart)); await this.ProcessContainerContainerAsync(stageId, subcontainer, newPath); // ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(subcontainer, ContainerEnd)); } await this.ProcessReleaseActionContainerAsync(stageId, container.SubItems?.OfType<ReleaseAction>(), newPath); this.ScriptGenerationNotification?.Invoke(this, GetContainerGenerationArgs(container, ContainerEnd)); }
private static GenerationEventArgs GetContainerGenerationArgs( IReleaseActionContainer<IReleaseWorkflowBlock> container, GenerationEventType eventType) { return new GenerationEventArgs { BlockType = container.ItemType, DisplayName = container.DisplayName, Sequence = container.Sequence, IsEnabled = true, IsContainer = true, GenerationEventType = eventType }; }