Browse Source

Cli: Slnx file support (initial)

pull/23822/head
Yunus Emre Kalkan 10 months ago
parent
commit
9ce0a6bf34
  1. 7
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemDotNetProjectBuildConfigReader.cs
  2. 14
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs
  3. 5
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs
  4. 10
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  5. 5
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs
  6. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToLocalCommand.cs
  7. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs
  8. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs
  9. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectRenameStep.cs
  10. 7
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs
  11. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceStringEncryptionStep.cs
  12. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs
  13. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs
  14. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs

7
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemDotNetProjectBuildConfigReader.cs

@ -21,8 +21,9 @@ public class FileSystemDotNetProjectBuildConfigReader : IDotNetProjectBuildConfi
public DotNetProjectBuildConfig Read(string directoryPath)
{
var buildConfig = new DotNetProjectBuildConfig();
var solutionFiles = Directory.GetFiles(directoryPath, "*.sln", SearchOption.TopDirectoryOnly);
if (solutionFiles.Length == 1)
var solutionFiles = Directory.GetFiles(directoryPath, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(directoryPath, "*.slnx", SearchOption.TopDirectoryOnly)).ToList();
if (solutionFiles.Count == 1)
{
buildConfig.SlFilePath = solutionFiles.First();
var configFile = GetClosestFile(directoryPath, _buildConfigName);
@ -86,7 +87,7 @@ public class FileSystemDotNetProjectBuildConfigReader : IDotNetProjectBuildConfi
directoryInfo = directoryInfo.Parent;
} while (directoryInfo?.Parent != null);
throw new Exception("There is no solution file (*.sln) and " + _buildConfigName +
throw new Exception("There is no solution file (*.sln or *.slnx) and " + _buildConfigName +
" in the working directory and working directory is not a GIT repository !");
}

14
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs

@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
@ -118,7 +119,7 @@ public class AddModuleCommand : IConsoleCommand, ITransientDependency
sb.AppendLine("");
sb.AppendLine("'add-module' command is used to add a multi-package ABP module to a solution.");
sb.AppendLine("It should be used in a folder containing a .sln file.");
sb.AppendLine("It should be used in a folder containing a .sln or .slnx file.");
sb.AppendLine("");
sb.AppendLine("Usage:");
sb.AppendLine(" abp add-module <module-name> [options]");
@ -166,20 +167,21 @@ public class AddModuleCommand : IConsoleCommand, ITransientDependency
return providedSolutionFile;
}
var foundSolutionFiles = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln");
if (foundSolutionFiles.Length == 1)
var foundSolutionFiles = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln")
.Concat(Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln")).ToList();
if (foundSolutionFiles.Count == 1)
{
return foundSolutionFiles[0];
}
if (foundSolutionFiles.Length == 0)
if (foundSolutionFiles.Count == 0)
{
throw new CliUsageException("'abp add-module' command should be used inside a folder containing a .sln file!");
throw new CliUsageException("'abp add-module' command should be used inside a folder containing a .sln or .slnx file!");
}
//foundSolutionFiles.Length > 1
var sb = new StringBuilder("There are multiple solution (.sln) files in the current directory. Please specify one of the files below:");
var sb = new StringBuilder("There are multiple solution (.sln or .slnx) files in the current directory. Please specify one of the files below:");
foreach (var foundSolutionFile in foundSolutionFiles)
{

5
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs

@ -83,7 +83,7 @@ public class AddPackageCommand : IConsoleCommand, ITransientDependency
sb.AppendLine("");
sb.AppendLine("'add-package' command is used to add an ABP package to a project.");
sb.AppendLine("It should be used in a folder containing a .csproj file, .sln file or packages.json.");
sb.AppendLine("It should be used in a folder containing a .csproj file, .sln file, .slnx file or packages.json.");
sb.AppendLine("");
sb.AppendLine("Usage:");
sb.AppendLine("");
@ -146,7 +146,8 @@ public class AddPackageCommand : IConsoleCommand, ITransientDependency
return providedSolutionFile;
}
return Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln").FirstOrDefault();
return Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln")
.Concat(Directory.GetFiles(Directory.GetCurrentDirectory(), "*.slnx")).FirstOrDefault();
}
protected virtual string GetAngularDirectory(CommandLineArgs commandLineArgs)

10
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -175,9 +175,10 @@ public abstract class ProjectCreationCommandBase
if (slnPath == null)
{
slnPath = Directory.GetFiles(outputFolderRoot, "*.sln").FirstOrDefault();
slnPath = Directory.GetFiles(outputFolderRoot, "*.sln")
.Concat(Directory.GetFiles(outputFolderRoot, "*.sln")).FirstOrDefault();
}
else if (slnPath.EndsWith(".sln"))
else if (slnPath.EndsWith(".sln") || slnPath.EndsWith(".slnx"))
{
Directory.SetCurrentDirectory(Path.GetDirectoryName(slnPath));
outputFolderRoot = Path.GetDirectoryName(slnPath);
@ -190,7 +191,8 @@ public abstract class ProjectCreationCommandBase
{
Directory.SetCurrentDirectory(slnPath);
outputFolderRoot = slnPath;
slnPath = Directory.GetFiles(outputFolderRoot, "*.sln").FirstOrDefault();
slnPath = Directory.GetFiles(outputFolderRoot, "*.sln")
.Concat(Directory.GetFiles(outputFolderRoot, "*.slnx")).FirstOrDefault();
}
if (slnPath == null)
@ -198,7 +200,7 @@ public abstract class ProjectCreationCommandBase
throw new CliUsageException($"This command should be run inside a folder that contains a microservice solution! Or use -{Options.MainSolution.Short} parameter.");
}
var microserviceSolutionName = Path.GetFileName(slnPath).RemovePostFix(".sln");
var microserviceSolutionName = Path.GetFileName(slnPath).RemovePostFix(".slnx").RemovePostFix(".sln");
version ??= SolutionPackageVersionFinder.FindByCsprojVersion(slnPath);
solutionName = SolutionName.Parse(microserviceSolutionName, projectName);

5
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs

@ -119,7 +119,7 @@ public class SuiteCommand : IConsoleCommand, ITransientDependency
var solutionFile = args.Options.GetOrNull(Options.Crud.Solution.Short, Options.Crud.Solution.Long);
if (entityFile.IsNullOrEmpty() || !entityFile.EndsWith(".json") || !File.Exists(entityFile) ||
solutionFile.IsNullOrEmpty() || !solutionFile.EndsWith(".sln"))
solutionFile.IsNullOrEmpty() || !(solutionFile.EndsWith(".sln") || solutionFile.EndsWith(".slnx")))
{
throw new UserFriendlyException("Invalid Arguments!");
}
@ -476,7 +476,8 @@ public class SuiteCommand : IConsoleCommand, ITransientDependency
private object GetTargetSolutionOrNull(CommandLineArgs commandLineArgs)
{
return commandLineArgs.Options.GetOrNull(Options.Crud.Solution.Short, Options.Crud.Solution.Long)
?? Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln", SearchOption.TopDirectoryOnly).FirstOrDefault();
?? Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(Directory.GetCurrentDirectory(), "*.slnx", SearchOption.TopDirectoryOnly)).FirstOrDefault();
}
private Process StartSuite()

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToLocalCommand.cs

@ -70,7 +70,7 @@ public class SwitchToLocal : IConsoleCommand, ITransientDependency
return null;
}
if (path.EndsWith(".sln") || path.EndsWith(".csproj"))
if (path.EndsWith(".sln") || path.EndsWith(".slnx") || path.EndsWith(".csproj"))
{
return Path.GetDirectoryName(path);
}

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs

@ -64,6 +64,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency
if (givenSolution.IsNullOrWhiteSpace())
{
solutions.AddRange(Directory.GetFiles(directory, "*.sln", SearchOption.AllDirectories));
solutions.AddRange(Directory.GetFiles(directory, "*.slnx", SearchOption.AllDirectories));
}
else
{
@ -76,7 +77,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency
{
foreach (var solution in solutions)
{
var solutionName = Path.GetFileName(solution).RemovePostFix(".sln");
var solutionName = Path.GetFileName(solution).RemovePostFix(".slnx").RemovePostFix(".sln");
await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, checkAll: checkAll, version: version, leptonXVersion: leptonXVersion);

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs

@ -41,7 +41,7 @@ public class AppNoLayersMoveProjectsStep : ProjectBuildPipelineStep
public void ModifySolutionFile(ProjectBuildContext context, string pathInSlnFile, string newPathInSlnFile)
{
var slnFile = context.Files.First(file => file.Name.EndsWith(".sln"));
var slnFile = context.Files.First(file => file.Name.EndsWith(".sln") ||file.Name.EndsWith(".slnx"));
slnFile.SetContent(slnFile.Content.Replace($"\"{pathInSlnFile}\"", $"\"{newPathInSlnFile}\""));
}

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectRenameStep.cs

@ -24,7 +24,7 @@ public class ProjectRenameStep : ProjectBuildPipelineStep
}
}
var files = context.Files.Where(f => f.Name.EndsWith(".sln") || f.Name.EndsWith(".cs"));
var files = context.Files.Where(f => f.Name.EndsWith(".sln") || f.Name.EndsWith(".slnx") || f.Name.EndsWith(".cs"));
foreach (var file in files)
{
file.NormalizeLineEndings();

7
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs

@ -43,7 +43,7 @@ public class RemoveProjectFromSolutionStep : ProjectBuildPipelineStep
private void RemoveProjectFromAbpmdlFile(ProjectBuildContext context)
{
var abpmdlFile = context.FindFile(_solutionFilePath.RemovePostFix(".sln") + ".abpmdl");
var abpmdlFile = context.FindFile(_solutionFilePath.RemovePostFix(".slnx").RemovePostFix(".sln") + ".abpmdl");
if (abpmdlFile == null)
{
@ -109,8 +109,11 @@ public class RemoveProjectFromSolutionStep : ProjectBuildPipelineStep
if (_solutionFilePath == null)
{
_solutionFilePath = context.FindFile("/aspnet-core/MyCompanyName.MyProjectName.sln")?.Name ??
context.FindFile("/aspnet-core/MyCompanyName.MyProjectName.slnx")?.Name ??
context.FindFile("/MyCompanyName.MyProjectName.sln")?.Name ??
context.FindFile("/MyCompanyName.MyProjectName.MicroserviceName.sln")?.Name;
context.FindFile("/MyCompanyName.MyProjectName.slnx")?.Name ??
context.FindFile("/MyCompanyName.MyProjectName.MicroserviceName.sln")?.Name ??
context.FindFile("/MyCompanyName.MyProjectName.MicroserviceName.slnx")?.Name;
}
if (_projectFolderPath == null)
{

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceStringEncryptionStep.cs

@ -17,7 +17,8 @@ public class MicroserviceServiceStringEncryptionStep : RandomizeStringEncryption
var directoryInfo = new DirectoryInfo(context.BuildArgs.OutputFolder);
do
{
var msSolution = Directory.GetFiles(directoryInfo.FullName, "*.sln", SearchOption.TopDirectoryOnly).FirstOrDefault();
var msSolution = Directory.GetFiles(directoryInfo.FullName, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(directoryInfo.FullName, "*.slnx", SearchOption.TopDirectoryOnly)).FirstOrDefault();
if (msSolution != null)
{
var appSettings = Directory.GetFiles(Path.Combine(directoryInfo.FullName, "apps", "auth-server"),

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs

@ -269,7 +269,8 @@ public class PackagePreviewSwitcher : ITransientDependency
private List<string> GetSolutionPaths(CommandLineArgs commandLineArgs)
{
return Directory.GetFiles(GetDirectory(commandLineArgs), "*.sln", SearchOption.AllDirectories).ToList();
return Directory.GetFiles(GetDirectory(commandLineArgs), "*.sln", SearchOption.AllDirectories)
.Concat(Directory.GetFiles(GetDirectory(commandLineArgs), "*.slnx", SearchOption.AllDirectories)).ToList();
}
private List<string> GetProjectPaths(CommandLineArgs commandLineArgs)
@ -317,7 +318,8 @@ public class PackagePreviewSwitcher : ITransientDependency
return Path.GetDirectoryName(projectFile);
}
if (Directory.GetFiles(targetFolder, "*.sln", SearchOption.TopDirectoryOnly).Any())
if (Directory.GetFiles(targetFolder, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(targetFolder, "*.slnx", SearchOption.TopDirectoryOnly)).Any())
{
break;
}

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs

@ -214,7 +214,8 @@ public class ProjectNugetPackageAdder : ITransientDependency
{
var folder = FindSolutionFolder(projectFile);
return Directory.GetFiles(folder, "*.sln", SearchOption.TopDirectoryOnly).FirstOrDefault();
return Directory.GetFiles(folder, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(folder, "*.slnx", SearchOption.TopDirectoryOnly)).FirstOrDefault();
}
protected virtual string FindSolutionFolder(string projectFile)
@ -232,7 +233,8 @@ public class ProjectNugetPackageAdder : ITransientDependency
return Path.GetDirectoryName(projectFile);
}
if (Directory.GetFiles(targetFolder, "*.sln", SearchOption.TopDirectoryOnly).Any())
if (Directory.GetFiles(targetFolder, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(targetFolder, "*.slnx", SearchOption.TopDirectoryOnly)).Any())
{
break;
}

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs

@ -335,7 +335,8 @@ public class SolutionModuleAdder : ITransientDependency
{
var projectsToRemove = new List<string>();
var moduleDirectory = Path.Combine(solutionDirectory, "modules", module.Name);
var moduleSolutionFile = Directory.GetFiles(moduleDirectory, "*.sln", SearchOption.TopDirectoryOnly).First();
var moduleSolutionFile = Directory.GetFiles(moduleDirectory, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(moduleDirectory, "*.slnx", SearchOption.TopDirectoryOnly)).First();
var isProjectTiered = await IsProjectTiered(projectFiles);
var webPackagesWillBeAddedToBlazorServerProject = false;
@ -609,7 +610,8 @@ public class SolutionModuleAdder : ITransientDependency
private async Task DeleteRedundantHostProjects(string targetModuleFolder, string folderName)
{
var moduleSolutionFile = Directory.GetFiles(targetModuleFolder, "*.sln", SearchOption.TopDirectoryOnly).First();
var moduleSolutionFile = Directory.GetFiles(targetModuleFolder, "*.sln", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetFiles(targetModuleFolder, "*.slnx", SearchOption.TopDirectoryOnly)).First();
var folder = Path.Combine(targetModuleFolder, folderName);
if (Directory.Exists(folder))

Loading…
Cancel
Save