From 276a47295e486fdaec4fba5c415f744ddb1b0f64 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Wed, 18 Sep 2019 16:02:27 +0300 Subject: [PATCH] Added license code replace step. --- .../Volo/Abp/Cli/Commands/NewCommand.cs | 51 ++++++++++++++----- .../Abp/Cli/Licensing/AbpIoApiKeyService.cs | 4 +- .../Volo/Abp/Cli/Licensing/IApiKeyService.cs | 2 +- .../Building/ProjectBuildPipelineBuilder.cs | 7 +++ .../Building/Steps/LicenseCodeReplaceStep.cs | 23 +++++++++ .../Building/Steps/SolutionRenameStep.cs | 1 - .../Abp/Cli/ProjectBuilding/ProjectBuilder.cs | 13 +++-- 7 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/LicenseCodeReplaceStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index a1545c57f6..6921f8e4d8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -40,18 +40,29 @@ namespace Volo.Abp.Cli.Commands Logger.LogInformation("Creating your project..."); Logger.LogInformation("Project name: " + commandLineArgs.Target); - commandLineArgs.Options.Add(CliConsts.Command, commandLineArgs.Command); + var template = commandLineArgs.Options.GetOrNull(Options.Template.Short, Options.Template.Long); + if (template != null) + { + Logger.LogInformation("Template: " + template); + } - var result = await ProjectBuilder.BuildAsync( - new ProjectBuildArgs( - SolutionName.Parse(commandLineArgs.Target), - commandLineArgs.Options.GetOrNull(Options.Template.Short, Options.Template.Long), - commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long), - GetDatabaseProvider(commandLineArgs), - GetUiFramework(commandLineArgs), - commandLineArgs.Options - ) - ); + var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long); + if (version != null) + { + Logger.LogInformation("Version: " + version); + } + + var databaseProvider = GetDatabaseProvider(commandLineArgs); + if (databaseProvider != DatabaseProvider.NotSpecified) + { + Logger.LogInformation("Database provider: " + databaseProvider); + } + + var uiFramework = GetUiFramework(commandLineArgs); + if (uiFramework != UiFramework.NotSpecified) + { + Logger.LogInformation("UI Framework: " + uiFramework); + } var outputFolder = commandLineArgs.Options.GetOrNull(Options.OutputFolder.Short, Options.OutputFolder.Long); if (outputFolder != null) @@ -68,6 +79,21 @@ namespace Volo.Abp.Cli.Commands outputFolder = Directory.GetCurrentDirectory(); } + Logger.LogInformation("Output folder: " + outputFolder); + + commandLineArgs.Options.Add(CliConsts.Command, commandLineArgs.Command); + + var result = await ProjectBuilder.BuildAsync( + new ProjectBuildArgs( + SolutionName.Parse(commandLineArgs.Target), + template, + version, + databaseProvider, + uiFramework, + commandLineArgs.Options + ) + ); + using (var templateFileStream = new MemoryStream(result.ZipContent)) { using (var zipInputStream = new ZipInputStream(templateFileStream)) @@ -101,8 +127,7 @@ namespace Volo.Abp.Cli.Commands } } - Logger.LogInformation($"Successfully created the project '{commandLineArgs.Target}'"); - Logger.LogInformation($"The output folder is: '{outputFolder}'"); + Logger.LogInformation($"'{commandLineArgs.Target}' has been successfully created to '{outputFolder}'"); } public string GetUsageInfo() diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs index e48e7853d4..22cd692ec3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs @@ -15,7 +15,7 @@ namespace Volo.Abp.Cli.Licensing protected IJsonSerializer JsonSerializer { get; } - public async Task GetApiKeyOrNullAsync() + public async Task GetApiKeyOrNullAsync() { using (var client = new CliHttpClient()) { @@ -29,7 +29,7 @@ namespace Volo.Abp.Cli.Licensing } var responseContent = await response.Content.ReadAsStringAsync(); - return JsonSerializer.Deserialize(responseContent).ApiKey; + return JsonSerializer.Deserialize(responseContent); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs index 9e97859148..0fb8058c61 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs @@ -5,6 +5,6 @@ namespace Volo.Abp.Cli.Licensing { public interface IApiKeyService { - Task GetApiKeyOrNullAsync(); + Task GetApiKeyOrNullAsync(); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs index 5f763b15f9..49cb44d13a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs @@ -1,4 +1,5 @@ using Volo.Abp.Cli.ProjectBuilding.Building.Steps; +using Volo.Abp.Cli.ProjectBuilding.Templates.App; namespace Volo.Abp.Cli.ProjectBuilding.Building { @@ -19,6 +20,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building pipeline.Steps.Add(new TemplateCodeDeleteStep()); pipeline.Steps.Add(new SolutionRenameStep()); + + if (context.Template.Name == AppProTemplate.TemplateName) + { + pipeline.Steps.Add(new LicenseCodeReplaceStep()); + } + pipeline.Steps.Add(new CreateProjectResultZipStep()); return pipeline; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/LicenseCodeReplaceStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/LicenseCodeReplaceStep.cs new file mode 100644 index 0000000000..b2dee80867 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/LicenseCodeReplaceStep.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class LicenseCodeReplaceStep : ProjectBuildPipelineStep + { + public override void Execute(ProjectBuildContext context) + { + var licenseCode = context.BuildArgs.ExtraProperties.GetOrDefault("license-code"); + + var appSettingsJsonFiles = context.Files.Where(f => + f.Name.EndsWith("appsettings.json", StringComparison.OrdinalIgnoreCase)); + + foreach (var appSettingsJson in appSettingsJsonFiles) + { + appSettingsJson.ReplaceText(@"", licenseCode); + } + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs index 076ee084d1..cb6f29de7e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using Volo.Abp.Cli.ProjectBuilding.Files; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs index 827e4e3d1f..6c9b6fa145 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs @@ -53,10 +53,15 @@ namespace Volo.Abp.Cli.ProjectBuilding args.Version ); - var apiKey = await ApiKeyService.GetApiKeyOrNullAsync(); - if (apiKey != null) + var apiKeyResult = await ApiKeyService.GetApiKeyOrNullAsync(); + if (apiKeyResult?.ApiKey != null) { - args.ExtraProperties["api-key"] = apiKey; + args.ExtraProperties["api-key"] = apiKeyResult.ApiKey; + } + + if (apiKeyResult?.LicenseCode != null) + { + args.ExtraProperties["license-code"] = apiKeyResult.LicenseCode; } var context = new ProjectBuildContext( @@ -69,7 +74,7 @@ namespace Volo.Abp.Cli.ProjectBuilding if (!templateInfo.DocumentUrl.IsNullOrEmpty()) { - Logger.LogInformation("Check out the documents: " + templateInfo.DocumentUrl); + Logger.LogInformation("Check out the documents at " + templateInfo.DocumentUrl); } // Exclude unwanted or known options.