diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/AbpProCliCoreModule.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/AbpProCliCoreModule.cs index 4d79924c..cfbe255b 100644 --- a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/AbpProCliCoreModule.cs +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/AbpProCliCoreModule.cs @@ -48,7 +48,8 @@ public class AbpProCliCoreModule : AbpModule //ExcludeFiles = "aspnet-core,vben28,abp-vnext-pro-nuget-all,abp-vnext-pro-nuget-simplify,docs,.github,LICENSE,Readme.md", ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env", OldCompanyName = "MyCompanyName", - OldProjectName = "MyProjectName" + OldProjectName = "MyProjectName", + OldModuleName = "MyModuleName", }, }; }); diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/NewCommand.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/NewCommand.cs index 6d58f611..ca41e633 100644 --- a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/NewCommand.cs +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/NewCommand.cs @@ -58,6 +58,7 @@ public class NewCommand : IConsoleCommand, ITransientDependency context.ReplaceSuffix = templateOptions.ReplaceSuffix; context.OldCompanyName = templateOptions.OldCompanyName; context.OldProjectName = templateOptions.OldProjectName; + context.OldModuleName = templateOptions.OldModuleName; // if (commandLineArgs.Target.IsNullOrWhiteSpace()) // { // GetUsageInfo(); @@ -82,6 +83,15 @@ public class NewCommand : IConsoleCommand, ITransientDependency return; } + //校验是否输入项目名称 + context.ModuleName = commandLineArgs.Options.GetOrNull(CommandOptions.Module.Short, CommandOptions.Module.Long); + if (context.TemplateKey == "abp-vnext-pro-nuget-module" && context.ModuleName.IsNullOrWhiteSpace()) + { + _logger.LogError("请输入模块名称"); + GetUsageInfo(); + return; + } + var outputFolder = commandLineArgs.Options.GetOrNull(CommandOptions.OutputFolder.Short, CommandOptions.OutputFolder.Long); outputFolder = outputFolder != null ? Path.GetFullPath(outputFolder) : Directory.GetCurrentDirectory(); diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Options/LionAbpProTemplateOptions.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Options/LionAbpProTemplateOptions.cs index d96c0131..4a8f4d71 100644 --- a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Options/LionAbpProTemplateOptions.cs +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Options/LionAbpProTemplateOptions.cs @@ -40,9 +40,11 @@ public class LionAbpProTemplateOptions /// 是否源码版本 /// public bool IsSource { get; set; } - - - public string OldCompanyName { get; set; } - public string OldProjectName { get; set; } + + public string OldCompanyName { get; set; } = string.Empty; + + public string OldProjectName { get; set; } = string.Empty; + + public string OldModuleName { get; set; } = string.Empty; } \ No newline at end of file diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeContext.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeContext.cs index e1c01982..c59a337f 100644 --- a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeContext.cs +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeContext.cs @@ -26,6 +26,11 @@ public class SourceCodeContext /// 替换ProjectName /// public string OldProjectName { get; set; } + /// + /// 替换ModuleName + /// + public string OldModuleName { get; set; } + /// /// New CompanyName /// @@ -34,6 +39,12 @@ public class SourceCodeContext /// New ProjectName /// public string ProjectName { get; set; } + + /// + /// New ModuleName + /// + public string ModuleName { get; set; } + /// /// 输入文件夹 /// diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeManager.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeManager.cs index 0567f672..7bfdb99a 100644 --- a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeManager.cs +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeManager.cs @@ -35,7 +35,7 @@ public class SourceCodeManager : ITransientDependency, ISourceCodeManager var localCacheFile = Path.Combine(CliPaths.TemplateCache, _options.RepositoryId + "-" + version + ".zip"); DirectoryHelper.DeleteIfExists(Path.Combine(CliPaths.TemplateCache, _options.RepositoryId + "-" + version), true); - + _logger.LogInformation($"Lion AbpPro Version:{version}"); _logger.LogInformation($"模板生成中......"); @@ -120,7 +120,16 @@ public class SourceCodeManager : ITransientDependency, ISourceCodeManager { try { - ReplaceHelper.ReplaceTemplates(context.ExtractProjectPath, context.OldCompanyName, context.OldProjectName, context.CompanyName, context.ProjectName, context.ReplaceSuffix); + ReplaceHelper.ReplaceTemplates( + context.ExtractProjectPath, + context.OldCompanyName, + context.OldProjectName, + context.OldModuleName, + context.CompanyName, + context.ProjectName, + context.ModuleName, + context.ReplaceSuffix); + if (context.IsSource) { context.TemplateFolder = context.ExtractProjectPath; diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplaceHelper.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplaceHelper.cs index 6782f4b2..e21b9ff4 100644 --- a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplaceHelper.cs +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplaceHelper.cs @@ -2,19 +2,19 @@ public static class ReplaceHelper { - public static void ReplaceTemplates(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName, string replaceSuffix) - { - try - { - RenameTemplate(sourcePath, oldCompanyName, oldProjectName, companyName, projectName, replaceSuffix); - } - catch (Exception ex) - { - throw new UserFriendlyException($"生成模板失败{ex.Message}"); - } - } - - private static void ReplaceTemplates(string sourcePath, string oldCompanyName, string oldProjectName, string oldModuleName, string companyName, string projectName, string moduleName, + // public static void ReplaceTemplates(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName, string replaceSuffix) + // { + // try + // { + // RenameTemplate(sourcePath, oldCompanyName, oldProjectName, companyName, projectName, replaceSuffix); + // } + // catch (Exception ex) + // { + // throw new UserFriendlyException($"生成模板失败{ex.Message}"); + // } + // } + + public static void ReplaceTemplates(string sourcePath, string oldCompanyName, string oldProjectName, string oldModuleName, string companyName, string projectName, string moduleName, string replaceSuffix) { try @@ -27,12 +27,12 @@ public static class ReplaceHelper } } - private static void RenameTemplate(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName, string replaceSuffix) - { - RenameAllDirectories(sourcePath, oldCompanyName, oldProjectName, companyName, projectName); - - RenameAllFileNameAndContent(sourcePath, oldCompanyName, oldProjectName, companyName, projectName, replaceSuffix); - } + // private static void RenameTemplate(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName, string replaceSuffix) + // { + // RenameAllDirectories(sourcePath, oldCompanyName, oldProjectName, companyName, projectName); + // + // RenameAllFileNameAndContent(sourcePath, oldCompanyName, oldProjectName, companyName, projectName, replaceSuffix); + // } private static void RenameTemplate(string sourcePath, string oldCompanyName, string oldProjectName, string oldModuleName, string companyName, string projectName, string moduleName, string replaceSuffix) @@ -41,29 +41,29 @@ public static class ReplaceHelper RenameAllFileNameAndContent(sourcePath, oldCompanyName, oldProjectName, oldModuleName, companyName, projectName, moduleName, replaceSuffix); } - private static void RenameAllDirectories(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName) - { - var directories = Directory.GetDirectories(sourcePath); - foreach (var subDirectory in directories) - { - RenameAllDirectories(subDirectory, oldCompanyName, oldProjectName, companyName, projectName); - - var directoryInfo = new DirectoryInfo(subDirectory); - if (directoryInfo.Name.Contains(oldCompanyName) || - directoryInfo.Name.Contains(oldProjectName)) - { - var oldDirectoryName = directoryInfo.Name; - var newDirectoryName = oldDirectoryName.CustomReplace(oldCompanyName, oldProjectName, companyName, projectName); - - var newDirectoryPath = Path.Combine(directoryInfo.Parent?.FullName, newDirectoryName); - - if (directoryInfo.FullName != newDirectoryPath) - { - directoryInfo.MoveTo(newDirectoryPath); - } - } - } - } + // private static void RenameAllDirectories(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName) + // { + // var directories = Directory.GetDirectories(sourcePath); + // foreach (var subDirectory in directories) + // { + // RenameAllDirectories(subDirectory, oldCompanyName, oldProjectName, companyName, projectName); + // + // var directoryInfo = new DirectoryInfo(subDirectory); + // if (directoryInfo.Name.Contains(oldCompanyName) || + // directoryInfo.Name.Contains(oldProjectName)) + // { + // var oldDirectoryName = directoryInfo.Name; + // var newDirectoryName = oldDirectoryName.CustomReplace(oldCompanyName, oldProjectName, companyName, projectName); + // + // var newDirectoryPath = Path.Combine(directoryInfo.Parent?.FullName, newDirectoryName); + // + // if (directoryInfo.FullName != newDirectoryPath) + // { + // directoryInfo.MoveTo(newDirectoryPath); + // } + // } + // } + // } private static void RenameAllDirectories(string sourcePath, string oldCompanyName, string oldProjectName, string oldModuleName, string companyName, string projectName, string moduleName) { @@ -90,45 +90,45 @@ public static class ReplaceHelper } } - private static void RenameAllFileNameAndContent(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName, string replaceSuffix) - { - var list = new DirectoryInfo(sourcePath) - .GetFiles() - .Where(f => replaceSuffix.Contains(f.Extension)) - .ToList(); - - var encoding = new UTF8Encoding(false); - foreach (var fileInfo in list) - { - // 改文件内容 - var oldContents = File.ReadAllText(fileInfo.FullName, encoding); - var newContents = oldContents.CustomReplace(oldCompanyName, oldProjectName, companyName, projectName); - - // 文件名包含模板关键字 - if (fileInfo.Name.Contains(oldCompanyName) - || fileInfo.Name.Contains(oldProjectName)) - { - var oldFileName = fileInfo.Name; - var newFileName = oldFileName.CustomReplace(oldCompanyName, oldProjectName, companyName, projectName); - - var newFilePath = Path.Combine(fileInfo.DirectoryName, newFileName); - // 无变化才重命名 - if (newFilePath != fileInfo.FullName) - { - File.Delete(fileInfo.FullName); - } - - File.WriteAllText(newFilePath, newContents, encoding); - } - else - File.WriteAllText(fileInfo.FullName, newContents, encoding); - } - - foreach (var subDirectory in Directory.GetDirectories(sourcePath)) - { - RenameAllFileNameAndContent(subDirectory, oldCompanyName, oldProjectName, companyName, projectName, replaceSuffix); - } - } + // private static void RenameAllFileNameAndContent(string sourcePath, string oldCompanyName, string oldProjectName, string companyName, string projectName, string replaceSuffix) + // { + // var list = new DirectoryInfo(sourcePath) + // .GetFiles() + // .Where(f => replaceSuffix.Contains(f.Extension)) + // .ToList(); + // + // var encoding = new UTF8Encoding(false); + // foreach (var fileInfo in list) + // { + // // 改文件内容 + // var oldContents = File.ReadAllText(fileInfo.FullName, encoding); + // var newContents = oldContents.CustomReplace(oldCompanyName, oldProjectName, companyName, projectName); + // + // // 文件名包含模板关键字 + // if (fileInfo.Name.Contains(oldCompanyName) + // || fileInfo.Name.Contains(oldProjectName)) + // { + // var oldFileName = fileInfo.Name; + // var newFileName = oldFileName.CustomReplace(oldCompanyName, oldProjectName, companyName, projectName); + // + // var newFilePath = Path.Combine(fileInfo.DirectoryName, newFileName); + // // 无变化才重命名 + // if (newFilePath != fileInfo.FullName) + // { + // File.Delete(fileInfo.FullName); + // } + // + // File.WriteAllText(newFilePath, newContents, encoding); + // } + // else + // File.WriteAllText(fileInfo.FullName, newContents, encoding); + // } + // + // foreach (var subDirectory in Directory.GetDirectories(sourcePath)) + // { + // RenameAllFileNameAndContent(subDirectory, oldCompanyName, oldProjectName, companyName, projectName, replaceSuffix); + // } + // } private static void RenameAllFileNameAndContent(string sourcePath, string oldCompanyName, string oldProjectName, string oldModuleName, string companyName, string projectName, string moduleName, string replaceSuffix) @@ -172,22 +172,22 @@ public static class ReplaceHelper } } - private static string CustomReplace(this string content, string oldCompanyName, string oldProjectName, string companyName, string projectName) - { - var result = content.ReplacePackageReferenceBasicManagement() - .ReplacePackageReferenceLanguageManagement() - .ReplacePackageReferenceFileManagement() - .ReplacePackageReferenceDataDictionaryManagement() - .ReplacePackageReferenceNotificationManagement() - .ReplacePackageReferenceCore(); - - result = result - .Replace(oldCompanyName, companyName) - .Replace(oldProjectName, projectName) - ; - - return result; - } + // private static string CustomReplace(this string content, string oldCompanyName, string oldProjectName, string companyName, string projectName) + // { + // var result = content.ReplacePackageReferenceBasicManagement() + // .ReplacePackageReferenceLanguageManagement() + // .ReplacePackageReferenceFileManagement() + // .ReplacePackageReferenceDataDictionaryManagement() + // .ReplacePackageReferenceNotificationManagement() + // .ReplacePackageReferenceCore(); + // + // result = result + // .Replace(oldCompanyName, companyName) + // .Replace(oldProjectName, projectName) + // ; + // + // return result; + // } private static string CustomReplace(this string content, string oldCompanyName, string oldProjectName, string oldModuleName, string companyName, string projectName, string moduleName) { @@ -198,168 +198,21 @@ public static class ReplaceHelper .ReplacePackageReferenceNotificationManagement() .ReplacePackageReferenceCore(); - result = result + if (oldModuleName.IsNullOrWhiteSpace() || oldModuleName.IsNullOrWhiteSpace()) + { + result = result + .Replace(oldCompanyName, companyName) + .Replace(oldProjectName, projectName); + } + else + { + result = result .Replace(oldCompanyName, companyName) .Replace(oldProjectName, projectName) - .Replace(oldModuleName, moduleName) - ; + .Replace(oldModuleName, moduleName); + } return result; } - public static string ReplacePackageReferenceCore(this string content) - { - - return content - .Replace("", - "") - .Replace("", - "") - .Replace("", - "") - .Replace("", - "") - ; - } - - public static string ReplacePackageReferenceBasicManagement(this string content) - { - return content - .Replace( - "", - "") - .Replace( - "", - "") - .Replace("", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace("", - "") - .Replace( - "", - ""); - } - - public static string ReplacePackageReferenceDataDictionaryManagement(this string content) - { - return content - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - ""); - } - - public static string ReplacePackageReferenceFileManagement(this string content) - { - return content - .Replace( - "", - "") - .Replace( - "", - "") - .Replace("", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace("", - "") - .Replace( - "", - ""); - } - - public static string ReplacePackageReferenceLanguageManagement(this string content) - { - return content - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - ""); - } - - public static string ReplacePackageReferenceNotificationManagement(this string content) - { - return content - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - "") - .Replace( - "", - ""); - } } \ No newline at end of file diff --git a/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplacePackageReferenceExtensions.cs b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplacePackageReferenceExtensions.cs new file mode 100644 index 00000000..48c718fd --- /dev/null +++ b/aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ReplacePackageReferenceExtensions.cs @@ -0,0 +1,159 @@ +namespace Lion.AbpPro.Cli.Utils; + +public static class ReplacePackageReferenceExtensions +{ + public static string ReplacePackageReferenceCore(this string content) + { + return content + .Replace("", + "") + .Replace("", + "") + .Replace("", + "") + .Replace("", + "") + ; + } + + public static string ReplacePackageReferenceBasicManagement(this string content) + { + return content + .Replace( + "", + "") + .Replace( + "", + "") + .Replace("", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace("", + "") + .Replace( + "", + ""); + } + + public static string ReplacePackageReferenceDataDictionaryManagement(this string content) + { + return content + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + ""); + } + + public static string ReplacePackageReferenceFileManagement(this string content) + { + return content + .Replace( + "", + "") + .Replace( + "", + "") + .Replace("", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace("", + "") + .Replace( + "", + ""); + } + + public static string ReplacePackageReferenceLanguageManagement(this string content) + { + return content + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + ""); + } + + public static string ReplacePackageReferenceNotificationManagement(this string content) + { + return content + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + "") + .Replace( + "", + ""); + } +} \ No newline at end of file