From 1eee1ef81fe4ce43c6bd7cc4c772c443b1903f02 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 19 Mar 2020 12:46:56 +0300 Subject: [PATCH] Cli: Don't create "aspnet-core" folder when new project is mvc and doesn't have mobile app resolved https://github.com/abpframework/abp/issues/3206 --- .../Volo/Abp/Cli/Commands/NewCommand.cs | 6 ++++ .../Building/Steps/RemoveRootFolderStep.cs | 29 +++++++++++++++++++ .../TemplateProjectBuildPipelineBuilder.cs | 5 ++++ 3 files changed, 40 insertions(+) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveRootFolderStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index 51950de215..28fcf4b3f6 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -135,6 +135,12 @@ namespace Volo.Abp.Cli.Commands var zipEntry = zipInputStream.GetNextEntry(); while (zipEntry != null) { + if (string.IsNullOrWhiteSpace(zipEntry.Name)) + { + zipEntry = zipInputStream.GetNextEntry(); + continue; + } + var fullZipToPath = Path.Combine(outputFolder, zipEntry.Name); var directoryName = Path.GetDirectoryName(fullZipToPath); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveRootFolderStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveRootFolderStep.cs new file mode 100644 index 0000000000..b6e8cc3852 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveRootFolderStep.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveRootFolderStep : ProjectBuildPipelineStep + { + public override void Execute(ProjectBuildContext context) + { + foreach (var file in context.Files) + { + file.SetName(RemoveRootFolder(file.Name)); + } + } + + private string RemoveRootFolder(string fileName) + { + if (!fileName.Contains('/')) + { + return fileName; + } + + return string.Join("/", fileName.Split('/').Skip(1)); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs index e5916f3cbc..a68de8ef62 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs @@ -23,6 +23,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building pipeline.Steps.Add(new LicenseCodeReplaceStep()); } + if (context.BuildArgs.UiFramework == UiFramework.Mvc && context.BuildArgs.MobileApp == MobileApp.None) + { + pipeline.Steps.Add(new RemoveRootFolderStep()); + } + pipeline.Steps.Add(new CreateProjectResultZipStep()); return pipeline;