Browse Source

feat(cli): update labp cli

pull/527/head
cKey 4 years ago
parent
commit
e9051e3d97
  1. 8
      README.en.md
  2. 8
      README.md
  3. 2
      aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj
  4. 89
      aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN/Abp/Cli/Commands/LocalFileCreateProjectService.cs

8
README.en.md

@ -11,13 +11,13 @@ This is a [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) -based Abp
### 1、Install cli ### 1、Install cli
```shell ```shell
dotnet tool install --global LINGYUN.Abp.Cli --version 5.1.1 dotnet tool install --global LINGYUN.Abp.Cli --version 5.1.4
``` ```
### 2、Install .NET Template ### 2、Install .NET Template
```shell ```shell
dotnet new --install LINGYUN.Abp.MicroService.Templates::5.1.1 dotnet new --install LINGYUN.Abp.MicroService.Templates::5.1.4
``` ```
### 3、Use cli create new project ### 3、Use cli create new project
@ -43,6 +43,10 @@ This is a [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) -based Abp
``` ```
### Feedback
* The author is not a freelancer and does not have much time to maintain the project. If there is a problem, please contact **colin.in@foxmail.com** by email
## Screenshots ## Screenshots
![Logging](./apps/vue/images/logging.png) ![Logging](./apps/vue/images/logging.png)

8
README.md

@ -13,13 +13,13 @@
### 1、安装dotnet工具 ### 1、安装dotnet工具
```shell ```shell
dotnet tool install --global LINGYUN.Abp.Cli --version 5.1.1 dotnet tool install --global LINGYUN.Abp.Cli --version 5.1.4
``` ```
### 2、安装.NET模板 ### 2、安装.NET模板
```shell ```shell
dotnet new --install LINGYUN.Abp.MicroService.Templates::5.1.1 dotnet new --install LINGYUN.Abp.MicroService.Templates::5.1.4
``` ```
### 3、使用cli创建一个项目 ### 3、使用cli创建一个项目
@ -45,6 +45,10 @@
``` ```
### 问题反馈
* 作者不是自由职业者,并没有那么多时间维护项目,如果出现问题,可以邮件联系 **colin.in@foxmail.com**,也可以加入QQ群聊: 795966922
## 截图 ## 截图
![系统日志](./apps/vue/images/logging.png) ![系统日志](./apps/vue/images/logging.png)

2
aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj

@ -5,7 +5,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<Version>5.1.1</Version> <Version>5.1.4</Version>
<Copyright>colin</Copyright> <Copyright>colin</Copyright>
<Description>Use LINGYUN.MicroService.Templates command line</Description> <Description>Use LINGYUN.MicroService.Templates command line</Description>
<PackAsTool>true</PackAsTool> <PackAsTool>true</PackAsTool>

89
aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN/Abp/Cli/Commands/LocalFileCreateProjectService.cs

@ -49,10 +49,20 @@ namespace LINGYUN.Abp.Cli.Commands
{ {
Logger.LogInformation("Execute dotnet command..."); Logger.LogInformation("Execute dotnet command...");
var dbm = createArgs.DatabaseManagementSystem switch
{
DatabaseManagementSystem.SQLite => "Sqlite",
DatabaseManagementSystem.Oracle => "Oracle",
DatabaseManagementSystem.OracleDevart => "OracleDevart",
DatabaseManagementSystem.PostgreSQL => "PostgreSql",
DatabaseManagementSystem.SQLServer => "SqlServer",
_ => "MySQL",
};
var commandBuilder = new StringBuilder("dotnet new"); var commandBuilder = new StringBuilder("dotnet new");
commandBuilder.AppendFormat(" {0}", createArgs.TemplateName); commandBuilder.AppendFormat(" {0}", createArgs.TemplateName);
commandBuilder.AppendFormat(" -n {0}", createArgs.SolutionName.ProjectName); commandBuilder.AppendFormat(" -n {0}", createArgs.SolutionName.ProjectName);
commandBuilder.AppendFormat(" -o {0}", createArgs.OutputFolder); commandBuilder.AppendFormat(" -o {0}", createArgs.OutputFolder);
commandBuilder.AppendFormat(" --DatabaseManagement {0}", dbm);
var cmdError = CmdHelper.RunCmdAndGetOutput(commandBuilder.ToString(), out bool isSuccessful); var cmdError = CmdHelper.RunCmdAndGetOutput(commandBuilder.ToString(), out bool isSuccessful);
if (!isSuccessful) if (!isSuccessful)
@ -82,8 +92,7 @@ namespace LINGYUN.Abp.Cli.Commands
createArgs.PackageName, createArgs.PackageName,
createArgs.SolutionName.CompanyName, createArgs.SolutionName.CompanyName,
createArgs.SolutionName.ProjectName, createArgs.SolutionName.ProjectName,
createArgs.ConnectionString, createArgs.ConnectionString);
createArgs.DatabaseManagementSystem);
Logger.LogInformation("Rewrite application url."); Logger.LogInformation("Rewrite application url.");
await TryReplaceApplicationUrlWithProjectFile( await TryReplaceApplicationUrlWithProjectFile(
@ -100,8 +109,7 @@ namespace LINGYUN.Abp.Cli.Commands
await TryReplacePackageAndCompanyNameWithProjectFolder( await TryReplacePackageAndCompanyNameWithProjectFolder(
projectFiles, projectFiles,
createArgs.PackageName, createArgs.PackageName,
createArgs.SolutionName.CompanyName, createArgs.SolutionName.CompanyName);
createArgs.DatabaseManagementSystem);
Logger.LogInformation($"'{createArgs.SolutionName.ProjectName}' has been successfully created to '{createArgs.OutputFolder}'"); Logger.LogInformation($"'{createArgs.SolutionName.ProjectName}' has been successfully created to '{createArgs.OutputFolder}'");
} }
@ -179,8 +187,7 @@ namespace LINGYUN.Abp.Cli.Commands
string packageName, string packageName,
string companyName, string companyName,
string projectName, string projectName,
string connectionString = null, string connectionString = null)
DatabaseManagementSystem database = DatabaseManagementSystem.NotSpecified)
{ {
var canReplaceFiles = projectFiles.Where(f => !f.IsFolder && f.Name.Contains("appsettings")); var canReplaceFiles = projectFiles.Where(f => !f.IsFolder && f.Name.Contains("appsettings"));
foreach (var projectFile in canReplaceFiles) foreach (var projectFile in canReplaceFiles)
@ -191,25 +198,6 @@ namespace LINGYUN.Abp.Cli.Commands
var defaultConnectionString = $"Server=127.0.0.1;Database={projectName};User Id=root;Password=123456"; var defaultConnectionString = $"Server=127.0.0.1;Database={projectName};User Id=root;Password=123456";
connectionString ??= defaultConnectionString; connectionString ??= defaultConnectionString;
await ReplaceFileTextAsync(projectFile, defaultConnectionString, connectionString); await ReplaceFileTextAsync(projectFile, defaultConnectionString, connectionString);
switch (database)
{
case DatabaseManagementSystem.SQLServer:
await ReplaceFileTextAsync(projectFile, "MySQL", "SqlServer");
break;
case DatabaseManagementSystem.SQLite:
await ReplaceFileTextAsync(projectFile, "MySQL", "Sqlite");
break;
case DatabaseManagementSystem.Oracle:
await ReplaceFileTextAsync(projectFile, "MySQL", "Oracle");
break;
case DatabaseManagementSystem.OracleDevart:
await ReplaceFileTextAsync(projectFile, "MySQL", "Oracle.Devart");
break;
case DatabaseManagementSystem.PostgreSQL:
await ReplaceFileTextAsync(projectFile, "MySQL", "PostgreSql");
break;
}
} }
} }
@ -224,44 +212,13 @@ namespace LINGYUN.Abp.Cli.Commands
{ {
await ReplaceFileTextAsync(projectFile, "PackageName", packageName); await ReplaceFileTextAsync(projectFile, "PackageName", packageName);
await ReplaceFileTextAsync(projectFile, "CompanyName", companyName); await ReplaceFileTextAsync(projectFile, "CompanyName", companyName);
if (database != DatabaseManagementSystem.NotSpecified &&
database != DatabaseManagementSystem.MySQL &&
projectFile.Name.EndsWith("MigrationsDbContextFactory.cs"))
{
await ReplaceFileTextAsync(
projectFile,
// 非 MySql 替换一下这一句
"connectionString, ServerVersion.AutoDetect(connectionString)",
"connectionString");
}
// DB 驱动
switch (database)
{
case DatabaseManagementSystem.SQLServer:
await ReplaceFileTextAsync(projectFile, "MySQL", "SqlServer");
break;
case DatabaseManagementSystem.SQLite:
await ReplaceFileTextAsync(projectFile, "MySQL", "Sqlite");
break;
case DatabaseManagementSystem.Oracle:
await ReplaceFileTextAsync(projectFile, "MySQL", "Oracle");
break;
case DatabaseManagementSystem.OracleDevart:
await ReplaceFileTextAsync(projectFile, "MySQL", "Oracle.Devart");
break;
case DatabaseManagementSystem.PostgreSQL:
await ReplaceFileTextAsync(projectFile, "MySQL", "PostgreSql");
break;
}
} }
} }
protected virtual Task TryReplacePackageAndCompanyNameWithProjectFolder( protected virtual Task TryReplacePackageAndCompanyNameWithProjectFolder(
List<FindFile> projectFiles, List<FindFile> projectFiles,
string packageName, string packageName,
string companyName, string companyName)
DatabaseManagementSystem database = DatabaseManagementSystem.NotSpecified)
{ {
var canReplaceFiles = projectFiles var canReplaceFiles = projectFiles
.OrderByDescending(f => f.Depth) .OrderByDescending(f => f.Depth)
@ -269,24 +226,6 @@ namespace LINGYUN.Abp.Cli.Commands
foreach (var projectFile in canReplaceFiles) foreach (var projectFile in canReplaceFiles)
{ {
var replaceFileName = projectFile.Name.Replace("PackageName", packageName).Replace("CompanyName", companyName); var replaceFileName = projectFile.Name.Replace("PackageName", packageName).Replace("CompanyName", companyName);
switch (database)
{
case DatabaseManagementSystem.SQLServer:
replaceFileName = replaceFileName.Replace("MySQL", "SqlServer", StringComparison.InvariantCultureIgnoreCase);
break;
case DatabaseManagementSystem.SQLite:
replaceFileName = replaceFileName.Replace("MySQL", "Sqlite", StringComparison.InvariantCultureIgnoreCase);
break;
case DatabaseManagementSystem.Oracle:
replaceFileName = replaceFileName.Replace("MySQL", "Oracle", StringComparison.InvariantCultureIgnoreCase);
break;
case DatabaseManagementSystem.OracleDevart:
replaceFileName = replaceFileName.Replace("MySQL", "Oracle.Devart", StringComparison.InvariantCultureIgnoreCase);
break;
case DatabaseManagementSystem.PostgreSQL:
replaceFileName = replaceFileName.Replace("MySQL", "PostgreSQL", StringComparison.InvariantCultureIgnoreCase);
break;
}
if (File.Exists(projectFile.Name)) if (File.Exists(projectFile.Name))
{ {

Loading…
Cancel
Save