Browse Source

CLI: Validate project name for template creation

pull/8979/head
EngincanV 6 years ago
parent
commit
4ab01ee707
  1. 7
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
  2. 25
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs

7
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs

@ -61,6 +61,11 @@ namespace Volo.Abp.Cli.Commands
);
}
if (ProjectNameValidator.IsContainsBannedProjectName(projectName) || ProjectNameValidator.IsContainsControlOrSurrogateCharacter(projectName))
{
throw new CliUsageException("The project name is not valid! Please specify a different name.");
}
Logger.LogInformation("Creating your project...");
Logger.LogInformation("Project name: " + projectName);
@ -554,4 +559,4 @@ namespace Volo.Abp.Cli.Commands
}
}
}
}
}

25
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs

@ -0,0 +1,25 @@
using System.Collections.Generic;
using System.Linq;
namespace Volo.Abp.Cli.Utils
{
public static class ProjectNameValidator
{
private static readonly List<string> BannedProjectNames = new()
{
"MyCompanyName.MyProjectName", "MyProjectName",
"/", "?", ":", "&", "\\", "*", "\"", "<", ">", "|", "#", "%",
"CON", "AUX", "PRN", "COM1", "LPT2", ".."
};
public static bool IsContainsBannedProjectName(string projectName)
{
return BannedProjectNames.Contains(projectName);
}
public static bool IsContainsControlOrSurrogateCharacter(string projectName)
{
return projectName.Any(chr => char.IsControl(chr) || char.IsSurrogate(chr));
}
}
}
Loading…
Cancel
Save