Merge pull request #8608 from abpframework/auto-merge/rel-4-3/293

Merge branch dev with rel-4.3
pull/8615/head
maliming 5 years ago committed by GitHub
commit 32a15af5af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -51,10 +51,16 @@ namespace Volo.Abp.Cli.ProjectModification
return FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor");
case NuGetPackageTarget.BlazorWebAssembly:
var BlazorWebAssemblyTargetProject = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor");
return BlazorWebAssemblyTargetProject != null && !BlazorProjectTypeChecker.IsBlazorServerProject(BlazorWebAssemblyTargetProject) ? BlazorWebAssemblyTargetProject : null;
return BlazorWebAssemblyTargetProject != null &&
!BlazorProjectTypeChecker.IsBlazorServerProject(BlazorWebAssemblyTargetProject)
? BlazorWebAssemblyTargetProject
: null;
case NuGetPackageTarget.BlazorServer:
var BlazorServerTargetProject = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor");
return BlazorServerTargetProject != null && BlazorProjectTypeChecker.IsBlazorServerProject(BlazorServerTargetProject) ? BlazorServerTargetProject : null;
return BlazorServerTargetProject != null &&
BlazorProjectTypeChecker.IsBlazorServerProject(BlazorServerTargetProject)
? BlazorServerTargetProject
: null;
default:
return null;
}
@ -94,6 +100,14 @@ namespace Volo.Abp.Cli.ProjectModification
projects.Add(project);
}
project = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor");
if (project != null &&
File.Exists(project) &&
BlazorProjectTypeChecker.IsBlazorServerProject(project))
{
projects.Add(project);
}
return projects.ToArray();
}
@ -120,8 +134,8 @@ namespace Volo.Abp.Cli.ProjectModification
for (var i = 0; i < assemblyNames.Length; i++)
{
var assemblyName = assemblyNames[i];
if(assemblyName.EndsWith(postfix, StringComparison.OrdinalIgnoreCase) &&
(excludePostfix == null || !assemblyName.EndsWith(excludePostfix)))
if (assemblyName.EndsWith(postfix, StringComparison.OrdinalIgnoreCase) &&
(excludePostfix == null || !assemblyName.EndsWith(excludePostfix)))
{
return projectFiles[i];
}
@ -165,4 +179,4 @@ namespace Volo.Abp.Cli.ProjectModification
return projectFolders.ToArray();
}
}
}
}

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using System.Xml;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Newtonsoft.Json.Linq;
using Volo.Abp.Cli.Args;
using Volo.Abp.Cli.Commands;
using Volo.Abp.Cli.Commands.Services;
@ -42,7 +43,8 @@ namespace Volo.Abp.Cli.ProjectModification
Logger = NullLogger<ProjectNpmPackageAdder>.Instance;
}
public async Task AddAngularPackageAsync(string directory, string npmPackageName, string version = null, bool withSourceCode = false)
public async Task AddAngularPackageAsync(string directory, string npmPackageName, string version = null,
bool withSourceCode = false)
{
await AddAngularPackageAsync(
directory,
@ -52,7 +54,8 @@ namespace Volo.Abp.Cli.ProjectModification
);
}
public async Task AddAngularPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null, bool withSourceCode = false)
public async Task AddAngularPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null,
bool withSourceCode = false)
{
var packageJsonFilePath = Path.Combine(directory, "package.json");
if (!File.Exists(packageJsonFilePath))
@ -85,9 +88,11 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
protected virtual async Task DownloadAngularSourceCode(string angularDirectory, NpmPackageInfo package, string version = null)
protected virtual async Task DownloadAngularSourceCode(string angularDirectory, NpmPackageInfo package,
string version = null)
{
var targetFolder = Path.Combine(angularDirectory, "projects", package.Name.RemovePreFix("@").Replace("/","-"));
var targetFolder = Path.Combine(angularDirectory, "projects",
package.Name.RemovePreFix("@").Replace("/", "-"));
if (Directory.Exists(targetFolder))
{
@ -101,7 +106,8 @@ namespace Volo.Abp.Cli.ProjectModification
);
}
public Task AddMvcPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null, bool skipGulpCommand = false)
public Task AddMvcPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null,
bool skipGulpCommand = false)
{
var packageJsonFilePath = Path.Combine(directory, "package.json");
if (!File.Exists(packageJsonFilePath) ||
@ -113,6 +119,11 @@ namespace Volo.Abp.Cli.ProjectModification
Logger.LogInformation($"Installing '{npmPackage.Name}' package to the project '{packageJsonFilePath}'...");
if (version == null)
{
version = DetectAbpVersionOrNull(Path.Combine(directory, "package.json"));
}
var versionPostfix = version != null ? $"@{version}" : string.Empty;
using (DirectoryHelper.ChangeCurrentDirectory(directory))
@ -132,9 +143,45 @@ namespace Volo.Abp.Cli.ProjectModification
return Task.CompletedTask;
}
private async Task<NpmPackageInfo> FindNpmPackageInfoAsync(string packageName)
private string DetectAbpVersionOrNull(string packageJsonFile)
{
if (string.IsNullOrEmpty(packageJsonFile) ||
!File.Exists(packageJsonFile))
{
return null;
}
try
{
var packageJsonFileContent = File.ReadAllText(packageJsonFile);
var packageJsonObject = JObject.Parse(packageJsonFileContent);
var dependenciesObject = (JObject) packageJsonObject["dependencies"];
if (dependenciesObject == null)
{
return null;
}
var packages = dependenciesObject.Children<JProperty>();
foreach (var package in packages)
{
if (package.Name.StartsWith("@abp/") || package.Name.StartsWith("@volo/"))
{
return package.Value.ToString();
}
}
}
catch (Exception ex)
{
Logger.LogWarning("Cannot detect ABP package version. " + ex.Message);
}
return null;
}
private async Task<NpmPackageInfo> FindNpmPackageInfoAsync(string packageName)
{
var url = $"{CliUrls.WwwAbpIo}api/app/npmPackage/byName/?name=" + packageName;
var client = _cliHttpClientFactory.CreateClient();
@ -155,4 +202,4 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
}
}
}

@ -189,6 +189,7 @@ namespace Volo.Abp.Cli.ProjectModification
var moduleDirectory = Path.Combine(solutionDirectory, "modules", module.Name);
var moduleSolutionFile = Directory.GetFiles(moduleDirectory, "*.sln", SearchOption.TopDirectoryOnly).First();
var isProjectTiered = await IsProjectTiered(projectFiles);
var webPackagesWillBeAddedToBlazorServerProject = false;
var blazorProject = projectFiles.FirstOrDefault(p => p.EndsWith(".Blazor.csproj"));
if (blazorProject == null)
@ -205,6 +206,8 @@ namespace Volo.Abp.Cli.ProjectModification
if (isBlazorServer)
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorWebAssembly, isProjectTiered);
webPackagesWillBeAddedToBlazorServerProject = module.NugetPackages.All(np=> np.Target != NuGetPackageTarget.BlazorServer && np.TieredTarget != NuGetPackageTarget.BlazorServer);
}
else
{
@ -212,7 +215,7 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
if (!projectFiles.Any(p => p.EndsWith(".Web.csproj")))
if (!projectFiles.Any(p => p.EndsWith(".Web.csproj")) && !webPackagesWillBeAddedToBlazorServerProject)
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.Web, isProjectTiered);
}
@ -459,6 +462,8 @@ namespace Volo.Abp.Cli.ProjectModification
private async Task AddNugetAndNpmReferences(ModuleWithMastersInfo module, string[] projectFiles,
bool useDotnetCliToInstall)
{
var webPackagesWillBeAddedToBlazorServerProject = SouldWebPackagesBeAddedToBlazorServerProject(module, projectFiles);
foreach (var nugetPackage in module.NugetPackages)
{
var nugetTarget =
@ -466,6 +471,11 @@ namespace Volo.Abp.Cli.ProjectModification
? nugetPackage.TieredTarget
: nugetPackage.Target;
if (webPackagesWillBeAddedToBlazorServerProject && nugetTarget == NuGetPackageTarget.Web)
{
nugetTarget = NuGetPackageTarget.BlazorServer;
}
var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetTarget);
if (targetProjectFile == null)
{
@ -501,6 +511,19 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
private static bool SouldWebPackagesBeAddedToBlazorServerProject(ModuleWithMastersInfo module, string[] projectFiles)
{
var blazorProject = projectFiles.FirstOrDefault(p => p.EndsWith(".Blazor.csproj"));
if (blazorProject == null)
{
return false;
}
var isBlazorServerProject = BlazorProjectTypeChecker.IsBlazorServerProject(blazorProject);
return isBlazorServerProject && module.NugetPackages.All(np => np.Target != NuGetPackageTarget.BlazorServer && np.TieredTarget != NuGetPackageTarget.BlazorServer);
}
protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, bool skipDbMigrations = false)
{
if (string.IsNullOrWhiteSpace(module.EfCoreConfigureMethodName))

Loading…
Cancel
Save