Browse Source

Initial working version of new project creation with temporary code.

pull/1089/head
Halil ibrahim Kalkan 8 years ago
parent
commit
e53279a6fb
  1. 2
      framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
  2. 8
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs
  3. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs
  4. 1
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs
  5. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs
  6. 10
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs
  7. 26
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs
  8. 10
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs
  9. 11
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs
  10. 9
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs
  11. 10
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs
  12. 13
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs
  13. 4
      framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj

2
framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj

@ -15,6 +15,8 @@
<PackageReference Include="Ionic.Zip" Version="1.9.1.8" /> <PackageReference Include="Ionic.Zip" Version="1.9.1.8" />
<PackageReference Include="HtmlAgilityPack.NetCore" Version="1.5.0.1" /> <PackageReference Include="HtmlAgilityPack.NetCore" Version="1.5.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.2.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
<PackageReference Include="System.Security.Permissions" Version="4.5.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

8
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.Json;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
@ -10,6 +11,9 @@ namespace Volo.Abp.Cli
)] )]
public class AbpCliCoreModule : AbpModule public class AbpCliCoreModule : AbpModule
{ {
public override void ConfigureServices(ServiceConfigurationContext context)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
} }
} }

2
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 namespace Volo.Abp.Cli.Commands
{ {
public class MainHelpCommand : ITransientDependency public class MainHelpCommand : IConsoleCommand, ITransientDependency
{ {
public Task ExecuteAsync(CommandLineArgs commandLineArgs) public Task ExecuteAsync(CommandLineArgs commandLineArgs)
{ {

1
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.ProjectBuilding;
using Volo.Abp.SolutionTemplating; using Volo.Abp.SolutionTemplating;
using Volo.Abp.SolutionTemplating.Building; using Volo.Abp.SolutionTemplating.Building;
using Volo.Abp.SolutionTemplating.Zipping;
namespace Volo.Abp.Cli.Commands namespace Volo.Abp.Cli.Commands
{ {

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs

@ -12,7 +12,7 @@ namespace Volo.Abp.ProjectBuilding
[CanBeNull] [CanBeNull]
public string TemplateName { get; set; } public string TemplateName { get; set; }
public DatabaseProvider DatabaseProvider { get; } public DatabaseProvider DatabaseProvider { get; set; }
public ProjectBuildArgs( public ProjectBuildArgs(
[NotNull] SolutionName solutionName, [NotNull] SolutionName solutionName,

10
framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs

@ -23,6 +23,16 @@ namespace Volo.Abp.ProjectBuilding
var templateInfo = GetTemplateInfo(args); 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 templateFile = await TemplateStore.GetAsync(args.TemplateName, version);
var context = new ProjectBuildContext( var context = new ProjectBuildContext(

26
framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs

@ -9,40 +9,22 @@ namespace Volo.Abp.ProjectBuilding
{ {
public TemplateInfo GetDefault() public TemplateInfo GetDefault()
{ {
return Get(TemplateNames.Mvc); return Get(MvcApplicationTemplate.TemplateName);
} }
public TemplateInfo Get(string name) public TemplateInfo Get(string name)
{ {
switch (name) switch (name)
{ {
case TemplateNames.Mvc: case MvcApplicationTemplate.TemplateName:
return new MvcApplicationTemplate(); return new MvcApplicationTemplate();
case TemplateNames.MvcModule: case MvcModuleTemplate.TemplateName:
return new MvcModuleTemplate(); return new MvcModuleTemplate();
case TemplateNames.Service: case ServiceTemplate.TemplateName:
return new ServiceTemplate(); return new ServiceTemplate();
default: default:
throw new Exception("There is no template found with given name: " + name); throw new Exception("There is no template found with given name: " + name);
} }
} }
public static class TemplateNames
{
/// <summary>
/// "mvc".
/// </summary>
public const string Mvc = "mvc";
/// <summary>
/// "mvcmodule".
/// </summary>
public const string MvcModule = "mvcmodule";
/// <summary>
/// "service".
/// </summary>
public const string Service = "service";
}
} }
} }

10
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 public class MvcApplicationTemplate : TemplateInfo
{ {
/// <summary>
/// "mvc".
/// </summary>
public const string TemplateName = "mvc";
public MvcApplicationTemplate()
: base(TemplateName, DatabaseProvider.EntityFrameworkCore)
{
}
public override IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context) public override IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context)
{ {
var steps = new List<ProjectBuildPipelineStep>(); var steps = new List<ProjectBuildPipelineStep>();

11
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 public class MvcModuleTemplate : TemplateInfo
{ {
/// <summary>
/// "mvcmodule".
/// </summary>
public const string TemplateName = "mvcmodule";
public MvcModuleTemplate()
: base(TemplateName)
{
}
} }
} }

9
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 public class ServiceTemplate : TemplateInfo
{ {
/// <summary>
/// "service".
/// </summary>
public const string TemplateName = "service";
public ServiceTemplate()
: base(TemplateName)
{
}
} }
} }

10
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) 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();
} }
} }
} }

13
framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs

@ -1,11 +1,22 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.SolutionTemplating.Building namespace Volo.Abp.SolutionTemplating.Building
{ {
public abstract class TemplateInfo 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<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context) public virtual IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context)
{ {

4
framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj

@ -10,6 +10,10 @@
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="NETStandard.Library" Version="2.0.3" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Cli.Core\Volo.Abp.Cli.Core.csproj" /> <ProjectReference Include="..\Volo.Abp.Cli.Core\Volo.Abp.Cli.Core.csproj" />
</ItemGroup> </ItemGroup>

Loading…
Cancel
Save