From 2afbd9defeef67826f057bd9ca72a5a73151e371 Mon Sep 17 00:00:00 2001 From: max Date: Sat, 20 Jul 2024 00:46:08 +0200 Subject: [PATCH] Generate solution file --- Nerfed.Editor/Project/Project.cs | 144 +++++++++++++++++++++---------- 1 file changed, 98 insertions(+), 46 deletions(-) diff --git a/Nerfed.Editor/Project/Project.cs b/Nerfed.Editor/Project/Project.cs index 82fc30b..e40f052 100644 --- a/Nerfed.Editor/Project/Project.cs +++ b/Nerfed.Editor/Project/Project.cs @@ -42,11 +42,7 @@ internal static bool Create(string path, string projectName) }; // Create solution. - if (!GenerateCSProjectFiles(path, projectConfig)) - { - Log.Error($"Generating cs project files failed!"); - return false; - } + GenerateSolution(path, projectConfig); string projectFilePath = Path.Combine(path, projectFileName); SaveProject(projectFilePath, projectConfig); @@ -106,13 +102,58 @@ internal static bool SaveProject(string path, ProjectConfig projectConfig) // Compile the project using the builder. internal static bool CompileProject() { + //GenerateSolution(); + //dotnet build + return false; } + private static void GenerateSolution(string path, ProjectConfig projectConfig) + { + GenerateCSProjectFiles(path, projectConfig); + + Log.Info("Generating solution file"); + string solution = +$@" +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35013.160 +MinimumVisualStudioVersion = 10.0.40219.1 +Project(""{{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}}"") = ""{projectConfig.Name}.Runtime"", ""{projectConfig.Name}.Runtime.csproj"", ""{{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}"" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Test|x64 = Test|x64 + Release|x64 = Release|x64 + Debug|x64 = Debug|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}.Test|x64.ActiveCfg = Test|x64 + {{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}.Test|x64.Build.0 = Test|x64 + {{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}.Release|x64.ActiveCfg = Release|x64 + {{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}.Release|x64.Build.0 = Release|x64 + {{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}.Debug|x64.ActiveCfg = Debug|x64 + {{B04FAEF8-7D91-43A9-81C5-4BD3217B0C23}}.Debug|x64.Build.0 = Debug|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {{117DD74B-A4DC-48CE-B782-C7AE565A9270}} + EndGlobalSection +EndGlobal +"; + + string solutionName = projectConfig.Name + ".sln"; + string filePath = Path.Combine(path, solutionName); + + File.WriteAllText(filePath, solution); + } + // Inspirered by https://github.com/ProwlEngine/Prowl/blob/main/Prowl.Editor/Project.cs // Maybe the builder should do this? // When compiling the 'runtimeAssembly.Location' needs to be updated to where ever the one is that is being used. - private static bool GenerateCSProjectFiles(string path, ProjectConfig projectConfig) + private static void GenerateCSProjectFiles(string path, ProjectConfig projectConfig) { Log.Info("Generating CS project files"); @@ -120,48 +161,52 @@ private static bool GenerateCSProjectFiles(string path, ProjectConfig projectCon Assembly runtimeAssembly = loadedAssemblies.FirstOrDefault(assembly => assembly.GetName().Name == "Nerfed.Runtime") ?? throw new Exception("Failed to find Runtime Assembly!"); string propertyGroup = - $@" - - net8.0 - enable - disable - true - true - true - false - false - Debug;Test;Release - x64 - +$@" + + net8.0 + enable + disable + true + true + true + false + false + Debug;Test;Release + x64 + - - TRACE;LOG_INFO;PROFILING - + + TRACE;LOG_INFO;PROFILING + - - TRACE;LOG_ERROR;PROFILING - true - + + TRACE;LOG_ERROR;PROFILING + true + - - TRACE;LOG_ERROR - true - - "; + + TRACE;LOG_ERROR + true + +"; string runtimeProject = - $@" - - {propertyGroup} - - - - {runtimeAssembly.Location} - false - - - - "; +$@" + + {propertyGroup} + + + + + + + + {runtimeAssembly.Location} + false + + + +"; string runtimeProjectName = projectConfig.Name + ".Runtime.csproj"; string filePath = Path.Combine(path, runtimeProjectName); @@ -172,9 +217,6 @@ private static bool GenerateCSProjectFiles(string path, ProjectConfig projectCon Log.Info($"Generated runtime at {filePath}"); // TODO: Editor project. - - - return true; } private static void SetupDefaultFolders(string path) @@ -187,6 +229,16 @@ private static void SetupDefaultFolders(string path) Directory.CreateDirectory(contentPath); } ProjectContentDirectory = contentPath; + string scriptsPath = Path.Combine(ProjectContentDirectory, "Scripts"); + if (!Directory.Exists(scriptsPath)) + { + Directory.CreateDirectory(scriptsPath); + } + string scriptsRuntimePath = Path.Combine(scriptsPath, "Runtime"); + if (!Directory.Exists(scriptsRuntimePath)) + { + Directory.CreateDirectory(scriptsRuntimePath); + } string tempPath = Path.Combine(path, "Temp"); if (!Directory.Exists(tempPath))