From e53279a6fb628f09552dc5dd7dc1e402581be69d Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Fri, 3 May 2019 15:21:19 +0300 Subject: [PATCH] Initial working version of new project creation with temporary code. --- .../Volo.Abp.Cli.Core.csproj | 2 ++ .../Volo/Abp/Cli/AbpCliCoreModule.cs | 8 ++++-- .../Volo/Abp/Cli/Commands/MainHelpCommand.cs | 2 +- .../Abp/Cli/Commands/NewProjectCommand.cs | 1 - .../Abp/ProjectBuilding/ProjectBuildArgs.cs | 2 +- .../Abp/ProjectBuilding/ProjectBuilder.cs | 10 +++++++ .../ProjectBuilding/TemplateInfoProvider.cs | 26 +++---------------- .../Templates/MvcApplicationTemplate.cs | 10 +++++++ .../Templates/MvcModuleTemplate.cs | 11 +++++++- .../Templates/ServiceTemplate.cs | 9 +++++++ .../Building/Steps/FileEntryListReadStep.cs | 10 +++---- .../Building/TemplateInfo.cs | 13 +++++++++- .../src/Volo.Abp.Cli/Volo.Abp.Cli.csproj | 4 +++ 13 files changed, 74 insertions(+), 34 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj index 459d95089a..07a488123c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj +++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj @@ -15,6 +15,8 @@ + + diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index e56c95ff27..555fe14ca4 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -1,4 +1,5 @@ -using Volo.Abp.Domain; +using System.Text; +using Volo.Abp.Domain; using Volo.Abp.Json; using Volo.Abp.Modularity; @@ -10,6 +11,9 @@ namespace Volo.Abp.Cli )] public class AbpCliCoreModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs index d06dcade91..96f7132934 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs @@ -5,7 +5,7 @@ using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.Commands { - public class MainHelpCommand : ITransientDependency + public class MainHelpCommand : IConsoleCommand, ITransientDependency { public Task ExecuteAsync(CommandLineArgs commandLineArgs) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs index b662bec85b..8addefbdde 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs @@ -7,7 +7,6 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.ProjectBuilding; using Volo.Abp.SolutionTemplating; using Volo.Abp.SolutionTemplating.Building; -using Volo.Abp.SolutionTemplating.Zipping; namespace Volo.Abp.Cli.Commands { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs index 5ca1a0ad99..34284ffafb 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.ProjectBuilding [CanBeNull] public string TemplateName { get; set; } - public DatabaseProvider DatabaseProvider { get; } + public DatabaseProvider DatabaseProvider { get; set; } public ProjectBuildArgs( [NotNull] SolutionName solutionName, diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs index ee13db6e3f..cc0f91940b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs @@ -23,6 +23,16 @@ namespace Volo.Abp.ProjectBuilding var templateInfo = GetTemplateInfo(args); + args.TemplateName = templateInfo.Name; + + if (args.DatabaseProvider == DatabaseProvider.NotSpecified) + { + if (templateInfo.DefaultDatabaseProvider != DatabaseProvider.NotSpecified) + { + args.DatabaseProvider = templateInfo.DefaultDatabaseProvider; + } + } + var templateFile = await TemplateStore.GetAsync(args.TemplateName, version); var context = new ProjectBuildContext( diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs index d65937eab2..bfc5aec303 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs @@ -9,40 +9,22 @@ namespace Volo.Abp.ProjectBuilding { public TemplateInfo GetDefault() { - return Get(TemplateNames.Mvc); + return Get(MvcApplicationTemplate.TemplateName); } public TemplateInfo Get(string name) { switch (name) { - case TemplateNames.Mvc: + case MvcApplicationTemplate.TemplateName: return new MvcApplicationTemplate(); - case TemplateNames.MvcModule: + case MvcModuleTemplate.TemplateName: return new MvcModuleTemplate(); - case TemplateNames.Service: + case ServiceTemplate.TemplateName: return new ServiceTemplate(); default: throw new Exception("There is no template found with given name: " + name); } } - - public static class TemplateNames - { - /// - /// "mvc". - /// - public const string Mvc = "mvc"; - - /// - /// "mvcmodule". - /// - public const string MvcModule = "mvcmodule"; - - /// - /// "service". - /// - public const string Service = "service"; - } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs index 7fe2fd7a0a..3b8dd55f54 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs @@ -6,6 +6,16 @@ namespace Volo.Abp.ProjectBuilding.Templates { public class MvcApplicationTemplate : TemplateInfo { + /// + /// "mvc". + /// + public const string TemplateName = "mvc"; + + public MvcApplicationTemplate() + : base(TemplateName, DatabaseProvider.EntityFrameworkCore) + { + } + public override IEnumerable GetCustomSteps(ProjectBuildContext context) { var steps = new List(); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs index 6549ce103c..a4f436932b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs @@ -4,6 +4,15 @@ namespace Volo.Abp.ProjectBuilding.Templates { public class MvcModuleTemplate : TemplateInfo { - + /// + /// "mvcmodule". + /// + public const string TemplateName = "mvcmodule"; + + public MvcModuleTemplate() + : base(TemplateName) + { + + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs index 7558891d34..ebbd9fa90a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs @@ -4,6 +4,15 @@ namespace Volo.Abp.ProjectBuilding.Templates { public class ServiceTemplate : TemplateInfo { + /// + /// "service". + /// + public const string TemplateName = "service"; + public ServiceTemplate() + : base(TemplateName) + { + + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs index d1433725ec..794f169a26 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs @@ -9,16 +9,16 @@ namespace Volo.Abp.SolutionTemplating.Building.Steps { public override void Execute(ProjectBuildContext context) { - context.Files = GetEntriesFromZipFile(context.Template.FilePath); + context.Files = GetEntriesFromZipFile(context.TemplateFile.FileBytes); } - private static FileEntryList GetEntriesFromZipFile(string filePath, string rootFolder = null) + private static FileEntryList GetEntriesFromZipFile(byte[] fileBytes) { - using (var templateFileStream = File.OpenRead(filePath)) + using (var memoryStream = new MemoryStream(fileBytes)) { - using (var templateZipFile = ZipFile.Read(templateFileStream)) + using (var templateZipFile = ZipFile.Read(memoryStream)) { - return templateZipFile.ToFileEntryList(rootFolder); + return templateZipFile.ToFileEntryList(); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs index 1756402664..0ef7d26a4f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs @@ -1,11 +1,22 @@ using System; using System.Collections.Generic; +using JetBrains.Annotations; namespace Volo.Abp.SolutionTemplating.Building { public abstract class TemplateInfo { - public string FilePath { get; set; } + public string Name { get; } + + public DatabaseProvider DefaultDatabaseProvider { get; } + + protected TemplateInfo( + [NotNull] string name, + DatabaseProvider defaultDatabaseProvider = DatabaseProvider.NotSpecified) + { + Name = Check.NotNullOrWhiteSpace(name, nameof(name)); + DefaultDatabaseProvider = Check.NotNull(defaultDatabaseProvider, nameof(defaultDatabaseProvider)); + } public virtual IEnumerable GetCustomSteps(ProjectBuildContext context) { diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj index f2f9424512..9cdc913391 100644 --- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj +++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj @@ -10,6 +10,10 @@ + + + +