示例#1
0
        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));
        }
示例#2
0
 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
                };
 }