Browse Source

feat: 调整cli

main-cli
Hanpaopao 1 year ago
parent
commit
9fed40a438
  1. 1011
      aspnet-core/Lion.AbpPro.All.sln
  2. 22
      aspnet-core/Lion.AbpPro.Cli.sln
  3. 2
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion.AbpPro.Cli.Core.csproj
  4. 51
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/AbpProCliCoreModule.cs
  5. 9
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Args/CommandOptions.cs
  6. 24
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Auth/GithubTokenAuthService.cs
  7. 14
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Auth/ITokenAuthService.cs
  8. 12
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/CliPaths.cs
  9. 4
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/CliService.cs
  10. 144
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/CreateCommand.cs
  11. 46
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/LoginCommand.cs
  12. 172
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/NewCommand.cs
  13. 75
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Github/GithubClient.cs
  14. 25
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Github/IGithubClient.cs
  15. 30
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Options/AbpProCliBusinessOptions.cs
  16. 1
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/ISourceCodeManager.cs
  17. 58
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeManager.cs
  18. 37
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ProcessHelper.cs
  19. 3
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Lion.AbpPro.HttpApi.Host.csproj
  20. 292
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Pages/Login.cshtml
  21. 202
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Pages/Monitor.cshtml
  22. 2
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.json
  23. 0
      templates/pro-module/Delete-BIN-OBJ-Folders.bat
  24. 0
      templates/pro-module/Directory.Build.Lion.targets
  25. 0
      templates/pro-module/Directory.Build.Microsoft.targets
  26. 0
      templates/pro-module/Directory.Build.Volo.targets
  27. 0
      templates/pro-module/Directory.Build.targets
  28. 0
      templates/pro-module/MyCompanyName.MyProjectName.MyModuleName.sln
  29. 0
      templates/pro-module/NuGet.Config
  30. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Controllers/HomeController.cs
  31. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs
  32. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs
  33. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/FodyWeavers.xml
  34. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/FodyWeavers.xsd
  35. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/GlobalUsings.cs
  36. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj
  37. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyModuleNameHttpApiHostModule.cs
  38. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Program.cs
  39. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Properties/launchSettings.json
  40. 0
      templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/appsettings.json
  41. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/FodyWeavers.xml
  42. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/FodyWeavers.xsd
  43. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/GlobalUsings.cs
  44. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj
  45. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyModuleNameApplicationContractsModule.cs
  46. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs
  47. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissions.cs
  48. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/FodyWeavers.xml
  49. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/FodyWeavers.xsd
  50. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/GlobalUsings.cs
  51. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyCompanyName.MyProjectName.MyModuleName.Application.csproj
  52. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameAppService.cs
  53. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameApplicationAutoMapperProfile.cs
  54. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameApplicationModule.cs
  55. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/FodyWeavers.xml
  56. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/FodyWeavers.xsd
  57. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/GlobalUsings.cs
  58. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/ar.json
  59. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/cs.json
  60. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/de-DE.json
  61. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/en-GB.json
  62. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/en.json
  63. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/es.json
  64. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/fr.json
  65. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/hu.json
  66. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/nl.json
  67. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/pl-PL.json
  68. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/pt-BR.json
  69. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/sl.json
  70. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/tr.json
  71. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/vi.json
  72. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/zh-Hans.json
  73. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/zh-Hant.json
  74. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleNameResource.cs
  75. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj
  76. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameConsts.cs
  77. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameDomainSharedModule.cs
  78. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameErrorCodes.cs
  79. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/FodyWeavers.xml
  80. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/FodyWeavers.xsd
  81. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/GlobalUsings.cs
  82. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyCompanyName.MyProjectName.MyModuleName.Domain.csproj
  83. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDbProperties.cs
  84. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainAutoMapperProfile.cs
  85. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainModule.cs
  86. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainService.cs
  87. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/Settings/MyModuleNameSettingDefinitionProvider.cs
  88. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/Settings/MyModuleNameSettings.cs
  89. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/IMyModuleNameDbContext.cs
  90. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContext.cs
  91. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs
  92. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs
  93. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs
  94. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/FodyWeavers.xml
  95. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/FodyWeavers.xsd
  96. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/GlobalUsings.cs
  97. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj
  98. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/FodyWeavers.xml
  99. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/FodyWeavers.xsd
  100. 0
      templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/GlobalUsings.cs

1011
aspnet-core/Lion.AbpPro.All.sln

File diff suppressed because it is too large

22
aspnet-core/Lion.AbpPro.Cli.sln

@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.Cli.Core", "frameworks\src\Lion.AbpPro.Cli.Core\Lion.AbpPro.Cli.Core.csproj", "{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.Cli", "frameworks\src\Lion.AbpPro.Cli\Lion.AbpPro.Cli.csproj", "{AA8325D9-C342-4AA0-A324-BF696D70B6CF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Release|Any CPU.Build.0 = Release|Any CPU
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

2
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion.AbpPro.Cli.Core.csproj

@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="Microsoft.Extensions.Http" />
<PackageReference Include="Octokit" />
<PackageReference Include="Octokit" Version="14.0.0"/>
<PackageReference Include="Polly" />
<PackageReference Include="Volo.Abp.Ddd.Domain" />
<PackageReference Include="Volo.Abp.Autofac" />

51
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/AbpProCliCoreModule.cs

@ -9,6 +9,8 @@ public class AbpProCliCoreModule : AbpModule
{
Configure<AbpCliOptions>(options => { options.Commands[HelpCommand.Name] = typeof(HelpCommand); });
Configure<AbpCliOptions>(options => { options.Commands[NewCommand.Name] = typeof(NewCommand); });
Configure<AbpCliOptions>(options => { options.Commands[LoginCommand.Name] = typeof(LoginCommand); });
Configure<AbpCliOptions>(options => { options.Commands[CreateCommand.Name] = typeof(CreateCommand); });
Configure<Options.AbpProCliOptions>(options =>
{
@ -17,16 +19,16 @@ public class AbpProCliCoreModule : AbpModule
options.Token = "abp-vnext-proghp_47vqiabp-vnext-provNkHKJguOJkdHvnxUabp-vnext-protij7Qbdn1Qy3fUabp-vnext-pro";
options.Templates = new List<AbpProTemplateOptions>()
{
new AbpProTemplateOptions("abp-vnext-pro", "pro", "源码版本", true)
new AbpProTemplateOptions("pro", "pro", "源码版本", true)
{
ExcludeFiles = "templates,docs,.github,LICENSE,Readme.md",
ExcludeFiles = "templates,docs,.github,LICENSE,.idea,Lion.AbpPro.Cli.sln,Lion.AbpPro.Cli.sln.DotSettings.user",
ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env,Directory.Build.Lion.targets",
OldCompanyName = "Lion",
OldProjectName = "AbpPro"
},
new AbpProTemplateOptions("abp-vnext-pro-nuget-all", "pro.all", "Nuget完整版本")
new AbpProTemplateOptions("pro-nuget", "pro-nuget", "Nuget完整版本")
{
//ExcludeFiles = "aspnet-core,vben28,abp-vnext-pro-nuget-module,abp-vnext-pro-nuget-simplify,docs,.github,LICENSE,Readme.md",
ExcludeFiles = "aspnet-core,pro-module,docs,.github,LICENSE,.idea,Lion.AbpPro.Cli.sln,Lion.AbpPro.Cli.sln.DotSettings.user",
ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env,Directory.Build.Lion.targets",
OldCompanyName = "MyCompanyName",
OldProjectName = "MyProjectName"
@ -39,24 +41,51 @@ public class AbpProCliCoreModule : AbpModule
// OldProjectName = "MyProjectName"
// },
new AbpProTemplateOptions("abp-vnext-pro-nuget-module", "pro.module", "模块")
new AbpProTemplateOptions("pro-module", "pro-module", "模块")
{
//ExcludeFiles = "aspnet-core,vben28,abp-vnext-pro-nuget-all,abp-vnext-pro-nuget-simplify,docs,.github,LICENSE,Readme.md",
ExcludeFiles = "aspnet-core,vben28,abp-nuget,docs,.github,LICENSE,.idea,Lion.AbpPro.Cli.sln,Lion.AbpPro.Cli.sln.DotSettings.user",
ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env,Directory.Build.Lion.targets",
OldCompanyName = "MyCompanyName",
OldProjectName = "MyProjectName",
OldModuleName = "MyModuleName",
},
new AbpProTemplateOptions("abp-vnext-pro-business", "local", "local")
}
};
});
Configure<Options.AbpProCliBusinessOptions>(options =>
{
options.Owner = "abp-vnext-pro";
options.RepositoryId = "abp";
options.Templates = new List<AbpProTemplateOptions>()
{
new AbpProTemplateOptions("source", "source", "商业版本源码版本")
{
//ExcludeFiles = "aspnet-core,vben28,abp-vnext-pro-nuget-module,abp-vnext-pro-nuget-simplify,docs,.github,LICENSE,Readme.md",
ExcludeFiles = ".github,LICENSE,Readme.md",
ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env,Directory.Build.Lion.targets",
OldCompanyName = "Lion",
OldProjectName = "AbpPro"
OldProjectName = "AbpPro",
OldModuleName = "",
},
new AbpProTemplateOptions("nuget", "nuget", "商业版本nuget版本")
{
ExcludeFiles = ".github,LICENSE,Readme.md,aspnet-core,.idea,gateways,MyCompanyName.MyProjectName.Gateways.sln,MyCompanyName.MyProjectName.Gateways.sln.DotSettings.user",
ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env,Directory.Build.Lion.targets,.sln.DotSettings.user",
OldCompanyName = "MyCompanyName",
OldProjectName = "MyProjectName",
OldModuleName = "",
},
new AbpProTemplateOptions("nuget-gateways", "nuget", "商业版本nuget版本")
{
ExcludeFiles = ".github,LICENSE,Readme.md,aspnet-core,.idea,MyCompanyName.MyProjectName.sln,MyCompanyName.MyProjectName.sln.DotSettings.user",
ReplaceSuffix = ".sln,.csproj,.cs,.cshtml,.json,.ci,.yml,.yaml,.nswag,.DotSettings,.env,Directory.Build.Lion.targets,.sln.DotSettings.user",
OldCompanyName = "MyCompanyName",
OldProjectName = "MyProjectName",
OldModuleName = "",
},
};
});
context.Services.AddHttpClient();
}
}

9
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Args/CommandOptions.cs

@ -65,4 +65,13 @@ public static class CommandOptions
public const string Short = "v";
public const string Long = "version";
}
/// <summary>
/// 版本
/// </summary>
public static class Token
{
public const string Short = "token";
public const string Long = "token";
}
}

24
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Auth/GithubTokenAuthService.cs

@ -0,0 +1,24 @@
namespace Lion.AbpPro.Cli.Auth;
public class GithubTokenAuthService : ITokenAuthService, ITransientDependency
{
public async Task SetAsync(string token)
{
if (token.IsNullOrWhiteSpace())
{
throw new UserFriendlyException("token不能为空");
}
if (!Directory.Exists(CliPaths.Root))
{
Directory.CreateDirectory(CliPaths.Root);
}
await File.WriteAllTextAsync(CliPaths.AccessToken, token, Encoding.UTF8);
}
public async Task<string> GetAsync()
{
return await File.ReadAllTextAsync(CliPaths.AccessToken);
}
}

14
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Auth/ITokenAuthService.cs

@ -0,0 +1,14 @@
namespace Lion.AbpPro.Cli.Auth;
public interface ITokenAuthService
{
/// <summary>
/// 设置token
/// </summary>
Task SetAsync(string token);
/// <summary>
/// 获取token
/// </summary>
Task<string> GetAsync();
}

12
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/CliPaths.cs

@ -3,8 +3,14 @@
public class CliPaths
{
public static string Log => Path.Combine(AbpRootPath, "logs");
public static string TemplateCache => Path.Combine(AbpRootPath, "templates");
public static string Root => Path.Combine(AbpRootPath, "cli");
public static string AccessToken => Path.Combine(AbpRootPath, "cli", "access-token.bin");
public static string Output => Path.Combine(AbpRootPath, "cli", "code", "output");
public static string Source => Path.Combine(AbpRootPath, "cli", "code", "source");
public static string TemplateCache => Path.Combine(AbpRootPath, "templates");
public static readonly string AbpRootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".abp.pro");
}

4
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/CliService.cs

@ -20,7 +20,7 @@ public class CliService : DomainService
public async Task RunAsync(string[] args)
{
Logger.LogInformation("ABP Pro CLI (https://https://doc.cncore.club/)");
Logger.LogInformation("ABP Pro CLI (http://doc.cncore.club/)");
Logger.LogInformation("请输入 lion.abp help 查看所有命令");
try
{
@ -30,7 +30,7 @@ public class CliService : DomainService
catch (Exception ex)
{
Logger.LogException(ex);
Logger.LogError(ex.Message);
}
}

144
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/CreateCommand.cs

@ -0,0 +1,144 @@
using Lion.AbpPro.Cli.Auth;
namespace Lion.AbpPro.Cli.Commands;
public class CreateCommand : IConsoleCommand, ITransientDependency
{
public const string Name = "create";
private readonly ILogger<CreateCommand> _logger;
private readonly ITokenAuthService _tokenAuthService;
private readonly Options.AbpProCliBusinessOptions _cliOptions;
private readonly IGithubClient _githubClient;
private readonly ISourceCodeManager _sourceCodeManager;
public CreateCommand(ILogger<CreateCommand> logger, ITokenAuthService tokenAuthService, IOptions<AbpProCliBusinessOptions> cliOptions, IGithubClient githubClient, ISourceCodeManager sourceCodeManager)
{
_logger = logger;
_tokenAuthService = tokenAuthService;
_githubClient = githubClient;
_sourceCodeManager = sourceCodeManager;
_cliOptions = cliOptions.Value;
}
public async Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
_logger.LogInformation($"开始创建模板......");
#region 参数判断
// 判断是否输入token
var token = await _tokenAuthService.GetAsync();
if (token.IsNullOrWhiteSpace())
{
_logger.LogError("请登录cli, lion.abp login -token 你的token");
return;
}
// 检查模板是否正确
var template = commandLineArgs.Options.GetOrNull(CommandOptions.Template.Short, CommandOptions.Template.Long);
var allTemplates = _cliOptions.Templates.Select(e => e.Key).JoinAsString("|");
if (template.IsNullOrWhiteSpace())
{
_logger.LogError($"请输入模板名称,lion.abp create -t 模板名称({allTemplates})");
GetUsageInfo();
return;
}
var templateOptions = _cliOptions.Templates.FirstOrDefault(e => e.Key == template);
if (templateOptions == null)
{
_logger.LogError($"模板类型不正确,lion.abp create -t 模板名称({allTemplates})");
GetUsageInfo();
return;
}
//校验是否输入公司名称
var companyName = commandLineArgs.Options.GetOrNull(CommandOptions.Company.Short, CommandOptions.Company.Long);
if (companyName.IsNullOrWhiteSpace())
{
_logger.LogError("请输入公司名称lion.abp create -c 公司名称");
GetUsageInfo();
return;
}
//校验是否输入项目名称
var projectName = commandLineArgs.Options.GetOrNull(CommandOptions.Project.Short, CommandOptions.Project.Long);
if (projectName.IsNullOrWhiteSpace())
{
_logger.LogError("请输入公司名称lion.abp create -p 项目名称");
GetUsageInfo();
return;
}
var version = commandLineArgs.Options.GetOrNull(CommandOptions.Version.Short, CommandOptions.Version.Long);
#endregion
// 获取release信息
Release release = null;
if (version.IsNullOrWhiteSpace())
{
release = await _githubClient.GetLatestVersionAsync(_cliOptions.Owner, _cliOptions.RepositoryId, token);
version = release.TagName;
}
else
{
release = await _githubClient.CheckVersionAsync(_cliOptions.Owner, _cliOptions.RepositoryId, token, version);
}
// 下载源码
var localFilePath = Path.Combine(CliPaths.Source, $"{_cliOptions.RepositoryId}-{release.TagName}.zip");
if (!Directory.Exists(CliPaths.Source))
{
Directory.CreateDirectory(CliPaths.Source);
}
if (!File.Exists(localFilePath))
{
_logger.LogInformation("正在从github下载源码......");
await _githubClient.DownloadAsync(release.ZipballUrl, localFilePath, token);
_logger.LogInformation("github源码下载完成.");
}
// 解压源码
var extractPath = _sourceCodeManager.ExtractProjectZip(localFilePath, _cliOptions.RepositoryId, version);
var contentPath = templateOptions.Name == "source" ? Path.Combine(extractPath, _cliOptions.RepositoryId) : Path.Combine(extractPath, _cliOptions.RepositoryId, "templates", templateOptions.Name);
// 复制源码到输出目录
var destOutput = Path.Combine(CliPaths.Output, $"{companyName}-{projectName}-{version}");
DirectoryAndFileHelper.CopyFolder(contentPath, destOutput, templateOptions.ExcludeFiles);
ReplaceHelper.ReplaceTemplates(
destOutput,
templateOptions.OldCompanyName,
templateOptions.OldProjectName,
templateOptions.OldModuleName,
companyName,
projectName,
string.Empty,
templateOptions.ReplaceSuffix,
version);
_logger.LogInformation($"创建模板成功,请查阅----->: {destOutput}");
ProcessHelper.OpenExplorer(destOutput);
}
public void GetUsageInfo()
{
var sb = new StringBuilder();
sb.AppendLine("");
sb.AppendLine("Usage:");
sb.AppendLine(" lion.abp create");
sb.AppendLine("lion.abp create -t 模板名称(source | nuget) -c 公司名称 -p 项目名称");
_logger.LogInformation(sb.ToString());
}
public string GetShortDescription()
{
return "创建商业版本项目:lion.abp create -t 模板名称(source | nuget) -c 公司名称 -p 项目名称";
}
}

46
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/LoginCommand.cs

@ -0,0 +1,46 @@
using Lion.AbpPro.Cli.Auth;
namespace Lion.AbpPro.Cli.Commands;
public class LoginCommand : IConsoleCommand, ITransientDependency
{
public const string Name = "login";
private readonly ILogger<LoginCommand> _logger;
private readonly ITokenAuthService _tokenAuthService;
public LoginCommand(ILogger<LoginCommand> logger, ITokenAuthService tokenAuthService)
{
_logger = logger;
_tokenAuthService = tokenAuthService;
}
public async Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
// 获取参数
var token = commandLineArgs.Options.GetOrNull(CommandOptions.Token.Short, CommandOptions.Token.Long);
if (token.IsNullOrWhiteSpace())
{
_logger.LogError("请输入token,完成命令:lion.abp login -token 你的token");
}
// 保存token
await _tokenAuthService.SetAsync(token);
_logger.LogInformation("恭喜你设置token成功.");
}
public void GetUsageInfo()
{
var sb = new StringBuilder();
sb.AppendLine("");
sb.AppendLine("Usage:");
sb.AppendLine(" lion.abp login");
sb.AppendLine("");
sb.AppendLine("请在github上创建token(经典),然后当作此命令的参数.");
_logger.LogInformation(sb.ToString());
}
public string GetShortDescription()
{
return "登录: lion.abp login -token 你的token(请联系管理员)";
}
}

172
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Commands/NewCommand.cs

@ -8,175 +8,147 @@ public class NewCommand : IConsoleCommand, ITransientDependency
private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly Options.AbpProCliOptions _cliOptions;
private readonly ISourceCodeManager _sourceCodeManager;
private readonly IGithubClient _githubClient;
public NewCommand(
IOptions<AbpCliOptions> abpCliOptions,
ILogger<NewCommand> logger,
IServiceScopeFactory serviceScopeFactory,
IOptions<Options.AbpProCliOptions> options,
ISourceCodeManager sourceCodeManager)
ISourceCodeManager sourceCodeManager,
IGithubClient githubClient)
{
_logger = logger;
_serviceScopeFactory = serviceScopeFactory;
_sourceCodeManager = sourceCodeManager;
_githubClient = githubClient;
_cliOptions = options.Value;
_abpCliOptions = abpCliOptions.Value;
}
public async Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
#region 参数获取
_logger.LogInformation($"开始创建模板......");
#region 参数判断
var context = new SourceCodeContext();
// 检查模板是否正确
var template = commandLineArgs.Options.GetOrNull(CommandOptions.Template.Short, CommandOptions.Template.Long);
var allTemplates = _cliOptions.Templates.Select(e => e.Key).JoinAsString("|");
if (template.IsNullOrWhiteSpace())
{
_logger.LogError("请输入模板名称");
_logger.LogError($"请输入模板名称,lion.abp create -t 模板名称({allTemplates})");
GetUsageInfo();
return;
}
var templateOptions = _cliOptions.Templates.FirstOrDefault(e => e.Name == template);
var templateOptions = _cliOptions.Templates.FirstOrDefault(e => e.Key == template);
if (templateOptions == null)
{
_logger.LogError("模板类型不正确");
_logger.LogError($"模板类型不正确,lion.abp create -t 模板名称({allTemplates})");
GetUsageInfo();
return;
}
context.RepositoryId = _cliOptions.RepositoryId;
context.Token = _cliOptions.DecryptToken;
context.Owner = _cliOptions.Owner;
context.TemplateName = templateOptions.Name;
context.TemplateKey = templateOptions.Key;
context.IsSource = templateOptions.IsSource;
context.ExcludeFiles = templateOptions.ExcludeFiles;
context.ReplaceSuffix = templateOptions.ReplaceSuffix;
context.OldCompanyName = templateOptions.OldCompanyName;
context.OldProjectName = templateOptions.OldProjectName;
context.OldModuleName = templateOptions.OldModuleName;
// if (commandLineArgs.Target.IsNullOrWhiteSpace())
// {
// GetUsageInfo();
// return;
// }
//校验是否输入公司名称
context.CompanyName = commandLineArgs.Options.GetOrNull(CommandOptions.Company.Short, CommandOptions.Company.Long);
if (context.CompanyName.IsNullOrWhiteSpace())
var companyName = commandLineArgs.Options.GetOrNull(CommandOptions.Company.Short, CommandOptions.Company.Long);
if (companyName.IsNullOrWhiteSpace())
{
_logger.LogError("请输入公司名称");
_logger.LogError("请输入公司名称lion.abp create -c 公司名称");
GetUsageInfo();
return;
}
//校验是否输入项目名称
context.ProjectName = commandLineArgs.Options.GetOrNull(CommandOptions.Project.Short, CommandOptions.Project.Long);
if (context.ProjectName.IsNullOrWhiteSpace())
var projectName = commandLineArgs.Options.GetOrNull(CommandOptions.Project.Short, CommandOptions.Project.Long);
if (projectName.IsNullOrWhiteSpace())
{
_logger.LogError("请输入项目名称");
_logger.LogError("请输入公司名称lion.abp create -p 项目名称");
GetUsageInfo();
return;
}
//校验是否输入项目名称
context.ModuleName = commandLineArgs.Options.GetOrNull(CommandOptions.Module.Short, CommandOptions.Module.Long);
if (context.TemplateKey == "abp-vnext-pro-nuget-module" && context.ModuleName.IsNullOrWhiteSpace())
//校验是否输入模块名称
var moduleName = commandLineArgs.Options.GetOrNull(CommandOptions.Module.Short, CommandOptions.Module.Long);
if (templateOptions.Key == "pro-module" && moduleName.IsNullOrWhiteSpace())
{
_logger.LogError("请输入模块名称");
_logger.LogError("请输入公司名称lion.abp create -m 模块名称");
GetUsageInfo();
return;
}
var outputFolder = commandLineArgs.Options.GetOrNull(CommandOptions.OutputFolder.Short, CommandOptions.OutputFolder.Long);
var version = commandLineArgs.Options.GetOrNull(CommandOptions.Version.Short, CommandOptions.Version.Long);
outputFolder = outputFolder != null ? Path.GetFullPath(outputFolder) : Directory.GetCurrentDirectory();
#endregion
context.OutputFolder = outputFolder;
if (_cliOptions.Templates.FirstOrDefault(e => e.Name == template) != null && template =="local")
// 获取release信息
Release release = null;
if (version.IsNullOrWhiteSpace())
{
var source = commandLineArgs.Options.GetOrNull(CommandOptions.Source.Short, CommandOptions.Source.Long);
context.TemplateFolder = source;
if (context.TemplateFolder.IsNullOrWhiteSpace())
{
Console.WriteLine("请输入源码地址");
Console.WriteLine("示例: lion.abp new -t local -c 公司名称 -p 项目名称 -s C:\\Users\\Code -o C:\\Users\\output");
return;
}
if (context.OutputFolder.IsNullOrWhiteSpace())
{
Console.WriteLine("请输入输出地址");
Console.WriteLine("示例: lion.abp new -t local -c 公司名称 -p 项目名称 -s C:\\Users\\Code -o C:\\Users\\output");
return;
}
_sourceCodeManager.ReplaceLocalTemplates(context);
release = await _githubClient.GetLatestVersionAsync(_cliOptions.Owner, _cliOptions.RepositoryId, _cliOptions.DecryptToken);
version = release.TagName;
}
else
{
//版本
var version = commandLineArgs.Options.GetOrNull(CommandOptions.Version.Short, CommandOptions.Version.Long);
#endregion
release = await _githubClient.CheckVersionAsync(_cliOptions.Owner, _cliOptions.RepositoryId, _cliOptions.DecryptToken, version);
}
// 获取源码
context.TemplateFile = await _sourceCodeManager.GetAsync(version);
// 下载源码
var localFilePath = Path.Combine(CliPaths.Source, $"{_cliOptions.RepositoryId}-{release.TagName}.zip");
// 解压
_sourceCodeManager.ExtractProjectZip(context);
if (!Directory.Exists(CliPaths.Source))
{
Directory.CreateDirectory(CliPaths.Source);
}
// 替换模板
_sourceCodeManager.ReplaceTemplates(context);
if (!File.Exists(localFilePath))
{
_logger.LogInformation("正在从github下载源码......");
await _githubClient.DownloadAsync(_cliOptions.Owner, _cliOptions.RepositoryId, version, localFilePath);
_logger.LogInformation("github源码下载完成.");
}
// 解压源码
var extractPath = _sourceCodeManager.ExtractProjectZip(localFilePath, _cliOptions.RepositoryId, version);
// 打开文件夹
Process.Start("explorer.exe", context.OutputFolder);
var contentPath = templateOptions.Name == "pro" ? Path.Combine(extractPath, _cliOptions.RepositoryId) : Path.Combine(extractPath, _cliOptions.RepositoryId, "templates", templateOptions.Name);
// 复制源码到输出目录
var destOutput = Path.Combine(CliPaths.Output, $"{companyName}-{projectName}-{version}");
if (templateOptions.Key == "pro-module")
{
destOutput = Path.Combine(CliPaths.Output, $"{companyName}-{projectName}-{moduleName}-{version}");
}
DirectoryAndFileHelper.CopyFolder(contentPath, destOutput, templateOptions.ExcludeFiles);
ReplaceHelper.ReplaceTemplates(
destOutput,
templateOptions.OldCompanyName,
templateOptions.OldProjectName,
templateOptions.OldModuleName,
companyName,
projectName,
moduleName,
templateOptions.ReplaceSuffix,
version);
_logger.LogInformation($"创建模板成功,请查阅----->: {destOutput}");
ProcessHelper.OpenExplorer(destOutput);
}
public void GetUsageInfo()
{
var sb = new StringBuilder();
sb.AppendLine("查看命令帮助:");
sb.AppendLine(" lion.abp help");
sb.AppendLine("命令列表:");
foreach (var command in _abpCliOptions.Commands.ToArray())
{
string shortDescription;
using (var scope = _serviceScopeFactory.CreateScope())
{
shortDescription = ((IConsoleCommand)scope.ServiceProvider
.GetRequiredService(command.Value)).GetShortDescription();
}
sb.Append(" > ");
sb.Append(command.Key);
sb.Append(string.IsNullOrWhiteSpace(shortDescription) ? "" : ":");
sb.Append(" ");
sb.AppendLine(shortDescription);
}
sb.AppendLine("");
sb.AppendLine("Usage:");
sb.AppendLine(" lion.abp new");
sb.AppendLine("lion.abp new -t 模板名称 -c 公司名称 -p 项目名称 -m 模块名称(创建模块才需要此参数)");
_logger.LogInformation(sb.ToString());
}
public string GetShortDescription()
{
var message = Environment.NewLine;
message += $" > lion.abp new -t pro -c 公司名称 -p 项目名称 -v 版本(默认LastRelease) -o 默认当前控制台执行目录";
message += Environment.NewLine;
message += $" > lion.abp new -t pro.all -c 公司名称 -p 项目名称 -v 版本(默认LastRelease) -o 默认当前控制台执行目录";
// message += Environment.NewLine;
// message += $" > lion.abp new -t pro.simplify -c 公司名称 -p 项目名称 -v 版本(默认LastRelease) -o 默认当前控制台执行目录";
message += Environment.NewLine;
message += $" > lion.abp new -t pro.module-c 公司名称 -p 项目名称 -v 版本(默认LastRelease) -o 默认当前控制台执行目录";
return message;
return "创建开源版本项目:lion.abp new -t 模板名称 -c 公司名称 -p 项目名称 -m 模块名称(创建模块才需要此参数)";
}
}

75
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Github/GithubClient.cs

@ -0,0 +1,75 @@
using FileMode = System.IO.FileMode;
namespace Lion.AbpPro.Cli.Github;
public class GithubClient : IGithubClient, ITransientDependency
{
private readonly IHttpClientFactory _httpClientFactory;
public GithubClient(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
protected virtual GitHubClient GetGitHubClient(string repositoryId, string token)
{
return new GitHubClient(new ProductHeaderValue("OctokitApp"))
{
// 匿名访问,api会限流,所以需要设置访问令牌
Credentials = new Credentials(token)
};
}
public async Task<Release> GetLatestVersionAsync(string owner, string repositoryId, string token)
{
var github = GetGitHubClient(repositoryId, token);
var release = await github.Repository.Release.GetLatest(owner, repositoryId);
if (release == null)
{
throw new Exception($"没有找到Release,请联系仓库管理员.");
}
return release;
}
public async Task<Release> CheckVersionAsync(string owner, string repositoryId, string token, string version)
{
var github = GetGitHubClient(repositoryId, token);
var release = await github.Repository.Release.Get(owner, repositoryId, version);
if (release == null)
{
throw new UserFriendlyException($"版本{version}不存在.");
}
return release;
}
public async Task DownloadAsync(string url, string localFilePath, string token)
{
using var httpClient = _httpClientFactory.CreateClient();
// 添加 GitHub 认证头
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("OctokitApp");
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Token", token);
// 下载文件
var response = await httpClient.GetAsync(url);
response.EnsureSuccessStatusCode();
// 保存到本地
await using var fileStream = new FileStream(localFilePath, FileMode.Create, FileAccess.Write);
await response.Content.CopyToAsync(fileStream);
}
/// <summary>
/// 下载源码
/// </summary>
public async Task DownloadAsync(string owner, string repositoryId, string version, string localFilePath)
{
var httpClient = _httpClientFactory.CreateClient();
var uri = new Uri($"https://github.com/{owner}/{repositoryId}/archive/refs/tags/{version}.zip");
var response = await httpClient.GetAsync(uri);
// 保存到本地
await using var fileStream = new FileStream(localFilePath, FileMode.Create, FileAccess.Write);
await response.Content.CopyToAsync(fileStream);
}
}

25
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Github/IGithubClient.cs

@ -0,0 +1,25 @@
namespace Lion.AbpPro.Cli.Github;
public interface IGithubClient
{
/// <summary>
/// 获取最后一个版本
/// </summary>
Task<Release> GetLatestVersionAsync(string owner,string repositoryId,string token);
/// <summary>
/// 检查版本是否存在
/// </summary>
Task<Release> CheckVersionAsync(string owner, string repositoryId,string token, string version);
/// <summary>
/// 下载源码
/// </summary>
Task DownloadAsync(string url, string localFilePath, string token);
/// <summary>
/// 下载源码
/// public 仓库使用
/// </summary>
Task DownloadAsync(string owner, string repositoryId, string version, string localFilePath);
}

30
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Options/AbpProCliBusinessOptions.cs

@ -0,0 +1,30 @@
namespace Lion.AbpPro.Cli.Options;
public class AbpProCliBusinessOptions
{
/// <summary>
/// 仓库拥有者
/// </summary>
public string Owner { get; set; }
/// <summary>
/// 仓库Id
/// </summary>
public string RepositoryId { get; set; }
/// <summary>
/// Github Token
/// </summary>
public string Token { get; set; }
/// <summary>
/// 解密 Github Token
/// </summary>
public string DecryptToken => Token;
/// <summary>
/// 模板信息
/// </summary>
public List<AbpProTemplateOptions> Templates { get; set; }
}

1
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/ISourceCodeManager.cs

@ -13,6 +13,7 @@ public interface ISourceCodeManager
/// </summary>
void ExtractProjectZip(SourceCodeContext context);
string ExtractProjectZip(string zipPath, string repositoryId, string version);
/// <summary>
/// 替换
/// </summary>

58
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/SourceCode/SourceCodeManager.cs

@ -1,3 +1,5 @@
using System.IO.Compression;
namespace Lion.AbpPro.Cli.SourceCode;
public class SourceCodeManager : ITransientDependency, ISourceCodeManager
@ -94,6 +96,28 @@ public class SourceCodeManager : ITransientDependency, ISourceCodeManager
context.ExtractProjectPath = Path.Combine(CliPaths.TemplateCache, _cliOptions.RepositoryId + "-" + context.TemplateFile.Version);
}
public string ExtractProjectZip(string zipPath, string repositoryId, string version)
{
var targetPath = Path.Combine(Path.GetDirectoryName(zipPath), repositoryId + "-" + version);
try
{
if (Directory.Exists(targetPath)) return targetPath;
System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, targetPath, Encoding.UTF8, true);
var directoryName = Path.Combine(targetPath, Directory.GetDirectories(targetPath).First());
Directory.Move(directoryName, Path.Combine(targetPath, repositoryId));
return Path.Combine(targetPath, repositoryId);
}
catch (Exception e)
{
_logger.LogError($"解压文件失败: {e.Message}");
}
return targetPath;
}
public void MoveTemplate(SourceCodeContext context)
{
// var codePath= Path.Combine(context.OutputFolder, context.CompanyName + "." + context.ProjectName);
@ -152,17 +176,39 @@ public class SourceCodeManager : ITransientDependency, ISourceCodeManager
DirectoryHelper.DeleteIfExists(context.ExtractProjectPath, true);
}
}
public void ReplaceTemplates(
string sourcePath,
string oldCompanyName,
string oldProjectName,
string oldModuleName,
string companyName,
string projectName,
string moduleName,
string replaceSuffix,
string version)
{
ReplaceHelper.ReplaceTemplates(
sourcePath,
oldCompanyName,
oldProjectName,
oldModuleName,
companyName,
projectName,
moduleName,
replaceSuffix,
version);
}
public void ReplaceLocalTemplates(SourceCodeContext context)
{
try
{
DirectoryHelper.DeleteIfExists(context.OutputFolder, true);
DirectoryAndFileHelper.CopyFolder(context.TemplateFolder, context.OutputFolder, context.ExcludeFiles);
ReplaceHelper.ReplaceTemplates(
context.OutputFolder,
context.OldCompanyName,
@ -185,7 +231,7 @@ public class SourceCodeManager : ITransientDependency, ISourceCodeManager
// }
//
// context.OutputFolder = Path.Combine(context.OutputFolder, context.CompanyName + "." + context.ProjectName);
// DirectoryAndFileHelper.CopyFolder(context.TemplateFolder, context.OutputFolder, context.ExcludeFiles);
_logger.LogInformation($"OutputFolder:{context.OutputFolder}");

37
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Utils/ProcessHelper.cs

@ -0,0 +1,37 @@
namespace Lion.AbpPro.Cli.Utils;
public static class ProcessHelper
{
public static void OpenExplorer(string path)
{
try
{
if (string.IsNullOrWhiteSpace(path)) return;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Process.Start("explorer.exe", path);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
// macOS 系统使用 open 命令打开文件夹
var startInfo = new ProcessStartInfo
{
FileName = "open",
Arguments = path,
UseShellExecute = false,
CreateNoWindow = true
};
using (var process = new Process())
{
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
}
}
}
catch (Exception e)
{
// ignore
}
}
}

3
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Lion.AbpPro.HttpApi.Host.csproj

@ -65,7 +65,4 @@
<Content Remove="$(UserProfile)\.nuget\packages\*\*\contentFiles\any\*\*.abppkg*.json" />
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\files\a.txt" />
</ItemGroup>
</Project>

292
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Pages/Login.cshtml

@ -2,157 +2,173 @@
@model Lion.AbpPro.Pages.Login
@{
Layout = null;
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>后台服务登录</title>
<link href="../wwwroot/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
<title>后台服务登录</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-offset-3 col-md-6">
<form class="form-horizontal" method="post">
@Html.AntiForgeryToken()
<span class="heading">后台服务登录</span>
<div class="form-group">
<input type="text" class="form-control" name="userName" placeholder="用户名">
</div>
<div class="form-group help">
<input type="password" class="form-control" name="password" placeholder="密码">
</div>
<div class="form-group">
<button type="submit" class="btn btn-default">登录</button>
</div>
</form>
<div class="row">
<div class="col-md-offset-3 col-md-6">
<form class="form-horizontal" method="post">
@Html.AntiForgeryToken()
<span class="heading">后台服务登录</span>
<div class="form-group">
<input type="text" class="form-control" name="userName" placeholder="用户名">
</div>
<div class="form-group help">
<input type="password" class="form-control" name="password" placeholder="密码">
</div>
<div class="form-group">
<button type="submit" class="btn btn-default">登录</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
<style>
.row {
width: 800 px;
height: auto;
margin: auto;
box-sizing: border-box;
transform: translate(0, 50%);
}
.form-horizontal {
background: #fff;
padding-bottom: 40px;
border-radius: 15px;
text-align: center;
}
.form-horizontal .heading {
display: block;
font-size: 35px;
font-weight: 700;
padding: 35px 0;
border-bottom: 1px solid #f0f0f0;
margin-bottom: 30px;
}
.form-horizontal .form-group {
padding: 0 40px;
margin: 0 0 25px 0;
position: relative;
}
.form-horizontal .form-control {
background: #f0f0f0;
border: none;
border-radius: 20px;
box-shadow: none;
padding: 0 20px 0 45px;
height: 40px;
transition: all 0.3s ease 0s;
}
.form-horizontal .form-control:focus {
background: #e0e0e0;
box-shadow: none;
outline: 0 none;
}
.form-horizontal .form-group i {
position: absolute;
top: 12px;
left: 60px;
font-size: 17px;
color: #c8c8c8;
transition: all 0.5s ease 0s;
}
.form-horizontal .form-control:focus + i {
color: #00b4ef;
}
.form-horizontal .fa-question-circle {
display: inline-block;
position: absolute;
top: 12px;
right: 60px;
font-size: 20px;
color: #808080;
transition: all 0.5s ease 0s;
}
.form-horizontal .fa-question-circle:hover {
color: #000;
}
.form-horizontal .main-checkbox {
float: left;
width: 20px;
height: 20px;
background: #11a3fc;
border-radius: 50%;
position: relative;
margin: 5px 0 0 5px;
border: 1px solid #11a3fc;
}
.form-horizontal .main-checkbox label {
width: 20px;
height: 20px;
position: absolute;
top: 0;
left: 0;
cursor: pointer;
}
.form-horizontal .main-checkbox label:after {
content: "";
width: 10px;
height: 5px;
position: absolute;
top: 5px;
left: 4px;
border: 3px solid #fff;
border-top: none;
border-right: none;
background: transparent;
opacity: 0;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.form-horizontal .main-checkbox input[type="checkbox"] {
visibility: hidden;
}
.form-horizontal .main-checkbox input[type="checkbox"]:checked + label:after {
opacity: 1;
}
.form-horizontal .text {
float: left;
margin-left: 7px;
line-height: 20px;
padding-top: 5px;
text-transform: capitalize;
}
.form-horizontal .btn {
text-align: center;
font-size: 14px;
color: #fff;
background: #00b4ef;
border-radius: 30px;
padding: 10px 25px;
border: none;
text-transform: capitalize;
transition: all 0.5s ease 0s;
}
.row {
width: 800px;
height: auto;
margin: auto;
box-sizing: border-box;
transform: translate(0, 50%);
}
.form-horizontal {
background: #fff;
padding-bottom: 40px;
border-radius: 15px;
text-align: center;
}
.form-horizontal .heading {
display: block;
font-size: 35px;
font-weight: 700;
padding: 35px 0;
border-bottom: 1px solid #f0f0f0;
margin-bottom: 30px;
}
.form-horizontal .form-group {
padding: 0 40px;
margin: 0 0 25px 0;
position: relative;
}
.form-horizontal .form-control {
background: #f0f0f0;
border: none;
border-radius: 20px;
box-shadow: none;
padding: 0 20px 0 45px;
height: 40px;
transition: all 0.3s ease 0s;
}
.form-horizontal .form-control:focus {
background: #e0e0e0;
box-shadow: none;
outline: 0 none;
}
.form-horizontal .form-group i {
position: absolute;
top: 12px;
left: 60px;
font-size: 17px;
color: #c8c8c8;
transition: all 0.5s ease 0s;
}
.form-horizontal .form-control:focus + i {
color: #00b4ef;
}
.form-horizontal .fa-question-circle {
display: inline-block;
position: absolute;
top: 12px;
right: 60px;
font-size: 20px;
color: #808080;
transition: all 0.5s ease 0s;
}
.form-horizontal .fa-question-circle:hover {
color: #000;
}
.form-horizontal .main-checkbox {
float: left;
width: 20px;
height: 20px;
background: #11a3fc;
border-radius: 50%;
position: relative;
margin: 5px 0 0 5px;
border: 1px solid #11a3fc;
}
.form-horizontal .main-checkbox label {
width: 20px;
height: 20px;
position: absolute;
top: 0;
left: 0;
cursor: pointer;
}
.form-horizontal .main-checkbox label:after {
content: "";
width: 10px;
height: 5px;
position: absolute;
top: 5px;
left: 4px;
border: 3px solid #fff;
border-top: none;
border-right: none;
background: transparent;
opacity: 0;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.form-horizontal .main-checkbox input[type="checkbox"] {
visibility: hidden;
}
.form-horizontal .main-checkbox input[type="checkbox"]:checked + label:after {
opacity: 1;
}
.form-horizontal .text {
float: left;
margin-left: 7px;
line-height: 20px;
padding-top: 5px;
text-transform: capitalize;
}
.form-horizontal .btn {
text-align: center;
font-size: 14px;
color: #fff;
background: #00b4ef;
border-radius: 30px;
padding: 10px 25px;
border: none;
text-transform: capitalize;
transition: all 0.5s ease 0s;
}
</style>

202
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Pages/Monitor.cshtml

@ -14,12 +14,12 @@
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link href="../wwwroot/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<title>后端服务</title>
</head>
<body>
<div class="container projects">
<div class="container projects ">
<div class="projects-header page-header">
<h2>后端服务列表</h2>
@* <p>这些项目或者是对Bootstrap进行了有益的补充,或者是基于Bootstrap开发的</p> *@
@ -89,96 +89,116 @@
</div>
</div>
</div>
</body>
</html>
<style>
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.container {
width: 1170 px;
padding-right: 15 px;
padding-left: 15 px;
margin-right: auto;
margin-left: auto;
}
.projects-header {
width: 60%;
text-align: center;
font-weight: 200;
display: block;
margin: 60 px auto 40 px !important;
}
.page-header {
padding-bottom: 9px;
margin: 40px auto;
border-bottom: 1 px solid #eee;
}
.projects-header h2 {
font-size: 42px;
letter-spacing: -1px;
}
h2 {
margin-top: 20 px;
margin-bottom: 10 px;
font-weight: 500;
line-height: 1.1;
color: inherit;
/* text-align: center; */
}
p {
margin: 0 0 10 px;
}
.row {
margin-right: -15 px;
margin-left: -15 px;
}
.col-lg-3 {
width: 25%;
}
.projects .thumbnail {
display: block;
margin-right: auto;
margin-left: auto;
text-align: center;
margin-bottom: 30 px;
border-radius: 0;
}
.thumbnail {
display: block;
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1 px solid #ddd;
.transition(border 0.2s ease-in-out);
}
a {
color: #337ab7;
text-decoration: none;
background-color: transparent;
}
.projects .thumbnail img {
max-width: 100%;
height: auto;
}
.thumbnail a > img,
.thumbnail > img {
margin-right: auto;
margin-left: auto;
}
img {
vertical-align: middle;
}
/* .projects .thumbnail .caption {
overflow-y: hidden;
color: #555;
} */
.caption {
padding: 9px;
overflow-y: hidden;
color: #555;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.container {
width: 1170px;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.projects-header {
width: 60%;
text-align: center;
font-weight: 200;
display: block;
margin: 60px auto 40px !important;
}
.page-header {
padding-bottom: 9px;
margin: 40px auto;
border-bottom: 1px solid #eee;
}
.projects-header h2 {
font-size: 42px;
letter-spacing: -1px;
}
h2 {
margin-top: 20px;
margin-bottom: 10px;
font-weight: 500;
line-height: 1.1;
color: inherit;
/* text-align: center; */
}
p {
margin: 0 0 10px;
}
.row {
margin-right: -15px;
margin-left: -15px;
}
.col-lg-3 {
width: 25%;
}
.projects .thumbnail {
display: block;
margin-right: auto;
margin-left: auto;
text-align: center;
margin-bottom: 30px;
border-radius: 0;
}
.thumbnail {
display: block;
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
.
transition(border 0.2 s ease-in-out);
}
a {
color: #337ab7;
text-decoration: none;
background-color: transparent;
}
.projects .thumbnail img {
max-width: 100%;
height: auto;
}
.thumbnail a > img,
.thumbnail > img {
margin-right: auto;
margin-left: auto;
}
img {
vertical-align: middle;
}
/* .projects .thumbnail .caption {
overflow-y: hidden;
color: #555;
} */
.caption {
padding: 9px;
overflow-y: hidden;
color: #555;
}
</style>

2
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.json

@ -34,7 +34,7 @@
"CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,http://localhost:3100"
},
"ConnectionStrings": {
"Default": "Data Source=localhost;Port=3306;Database=LionAbpPro9;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true"
"Default": "Data Source=localhost;Port=3306;Database=LionAbpProDemo9;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true"
},
"Hangfire": {
"Redis": {

0
templates/abp-vnext-pro-nuget-all/aspnet-core/Delete-BIN-OBJ-Folders.bat → templates/pro-module/Delete-BIN-OBJ-Folders.bat

0
templates/abp-vnext-pro-nuget-module/Directory.Build.Lion.targets → templates/pro-module/Directory.Build.Lion.targets

0
templates/abp-vnext-pro-nuget-all/aspnet-core/Directory.Build.Microsoft.targets → templates/pro-module/Directory.Build.Microsoft.targets

0
templates/abp-vnext-pro-nuget-all/aspnet-core/Directory.Build.Volo.targets → templates/pro-module/Directory.Build.Volo.targets

0
templates/abp-vnext-pro-nuget-all/aspnet-core/Directory.Build.targets → templates/pro-module/Directory.Build.targets

0
templates/abp-vnext-pro-nuget-module/MyCompanyName.MyProjectName.MyModuleName.sln → templates/pro-module/MyCompanyName.MyProjectName.MyModuleName.sln

0
templates/abp-vnext-pro-nuget-all/aspnet-core/NuGet.Config → templates/pro-module/NuGet.Config

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Controllers/HomeController.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Controllers/HomeController.cs

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/FodyWeavers.xml → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/FodyWeavers.xsd → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/GlobalUsings.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/GlobalUsings.cs

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyModuleNameHttpApiHostModule.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyModuleNameHttpApiHostModule.cs

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Program.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Program.cs

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Properties/launchSettings.json → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/Properties/launchSettings.json

0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/appsettings.json → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/appsettings.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/FodyWeavers.xml → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/FodyWeavers.xsd → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/GlobalUsings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/GlobalUsings.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyModuleNameApplicationContractsModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyModuleNameApplicationContractsModule.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissions.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/FodyWeavers.xml → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/FodyWeavers.xsd → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/GlobalUsings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/GlobalUsings.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyCompanyName.MyProjectName.MyModuleName.Application.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyCompanyName.MyProjectName.MyModuleName.Application.csproj

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameAppService.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameAppService.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameApplicationAutoMapperProfile.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameApplicationAutoMapperProfile.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameApplicationModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application/MyModuleNameApplicationModule.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/FodyWeavers.xml → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/FodyWeavers.xsd → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/GlobalUsings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/GlobalUsings.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/ar.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/ar.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/cs.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/cs.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/de-DE.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/de-DE.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/en-GB.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/en-GB.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/en.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/en.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/es.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/es.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/fr.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/fr.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/hu.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/hu.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/nl.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/nl.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/pl-PL.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/pl-PL.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/pt-BR.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/pt-BR.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/sl.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/sl.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/tr.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/tr.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/vi.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/vi.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/zh-Hans.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/zh-Hans.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/zh-Hant.json → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleName/zh-Hant.json

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleNameResource.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/Localization/MyModuleNameResource.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameConsts.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameConsts.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameDomainSharedModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameDomainSharedModule.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameErrorCodes.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyModuleNameErrorCodes.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/FodyWeavers.xml → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/FodyWeavers.xsd → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/GlobalUsings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/GlobalUsings.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyCompanyName.MyProjectName.MyModuleName.Domain.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyCompanyName.MyProjectName.MyModuleName.Domain.csproj

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDbProperties.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDbProperties.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainAutoMapperProfile.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainAutoMapperProfile.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainModule.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainService.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/MyModuleNameDomainService.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/Settings/MyModuleNameSettingDefinitionProvider.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/Settings/MyModuleNameSettingDefinitionProvider.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/Settings/MyModuleNameSettings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain/Settings/MyModuleNameSettings.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/IMyModuleNameDbContext.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/IMyModuleNameDbContext.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContext.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContext.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/FodyWeavers.xml → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/FodyWeavers.xsd → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/GlobalUsings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/GlobalUsings.cs

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/FodyWeavers.xml → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/FodyWeavers.xml

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/FodyWeavers.xsd → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/FodyWeavers.xsd

0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/GlobalUsings.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Client/GlobalUsings.cs

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save