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="HtmlAgilityPack.NetCore" Version="1.5.0.1" />
<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>

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.Modularity;
@ -10,6 +11,9 @@ namespace Volo.Abp.Cli
)]
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
{
public class MainHelpCommand : ITransientDependency
public class MainHelpCommand : IConsoleCommand, ITransientDependency
{
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.SolutionTemplating;
using Volo.Abp.SolutionTemplating.Building;
using Volo.Abp.SolutionTemplating.Zipping;
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]
public string TemplateName { get; set; }
public DatabaseProvider DatabaseProvider { get; }
public DatabaseProvider DatabaseProvider { get; set; }
public ProjectBuildArgs(
[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);
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(

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

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

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

Loading…
Cancel
Save