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 4d4f6f797e..44c1789907 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 @@ -9,6 +9,7 @@ using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Cli.Args; using Volo.Abp.Cli.ProjectBuilding; using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.Utils; using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.Commands @@ -28,7 +29,9 @@ namespace Volo.Abp.Cli.Commands public async Task ExecuteAsync(CommandLineArgs commandLineArgs) { - if (commandLineArgs.Target == null) + var projectName = NamespaceHelper.NormalizeNamespace(commandLineArgs.Target); + + if (projectName == null) { throw new CliUsageException( "Project name is missing!" + @@ -36,9 +39,9 @@ namespace Volo.Abp.Cli.Commands GetUsageInfo() ); } - + Logger.LogInformation("Creating your project..."); - Logger.LogInformation("Project name: " + commandLineArgs.Target); + Logger.LogInformation("Project name: " + projectName); var template = commandLineArgs.Options.GetOrNull(Options.Template.Short, Options.Template.Long); if (template != null) @@ -73,7 +76,7 @@ namespace Volo.Abp.Cli.Commands var outputFolder = commandLineArgs.Options.GetOrNull(Options.OutputFolder.Short, Options.OutputFolder.Long); outputFolder = Path.Combine(outputFolder != null ? Path.GetFullPath(outputFolder) : Directory.GetCurrentDirectory(), - SolutionName.Parse(commandLineArgs.Target).FullName); + SolutionName.Parse(projectName).FullName); if (!Directory.Exists(outputFolder)) { @@ -86,7 +89,7 @@ namespace Volo.Abp.Cli.Commands var result = await TemplateProjectBuilder.BuildAsync( new ProjectBuildArgs( - SolutionName.Parse(commandLineArgs.Target), + SolutionName.Parse(projectName), template, version, databaseProvider, @@ -129,7 +132,7 @@ namespace Volo.Abp.Cli.Commands } } - Logger.LogInformation($"'{commandLineArgs.Target}' has been successfully created to '{outputFolder}'"); + Logger.LogInformation($"'{projectName}' has been successfully created to '{outputFolder}'"); } public string GetUsageInfo() diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NamespaceHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NamespaceHelper.cs new file mode 100644 index 0000000000..80e893afcf --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NamespaceHelper.cs @@ -0,0 +1,21 @@ +using System.Text.RegularExpressions; +using JetBrains.Annotations; + +namespace Volo.Abp.Cli.Utils +{ + public static class NamespaceHelper + { + public static string NormalizeNamespace([CanBeNull] string value) + { + if (string.IsNullOrEmpty(value)) + { + return value; + } + + value = value.Trim(); + value = Regex.Replace(value, @"(((?<=\.)|^)((?=\d)|\.)|[^\w\.])|(\.$)", "_"); + + return value; + } + } +} \ No newline at end of file