Browse Source

Moved building built in extensions to builder

flabbet 7 months ago
parent
commit
7ca7855ed5

+ 0 - 2
src/PixiEditor.Beta/PixiEditor.Beta.csproj

@@ -14,8 +14,6 @@
     <HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
     <DebuggerSupport>false</DebuggerSupport>
     <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
-    <!--TODO: Temp solution, make it properly build by build system and copy to target dir on publish-->
-    <PixiExtOutputPath>$(MSBuildProjectDirectory)\..\PixiEditor\Extensions</PixiExtOutputPath>
     <ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
     <RootNamespace>PixiEditor.Beta</RootNamespace>
   </PropertyGroup>

+ 62 - 3
src/PixiEditor.Builder/build/Program.cs

@@ -23,6 +23,8 @@ public class BuildContext : FrostingContext
 {
     public string PathToProject { get; set; } = "../PixiEditor/PixiEditor.csproj";
 
+    public string[] ExtensionProjectsToInclude { get; set; } = [];
+
     public string CrashReportWebhookUrl { get; set; }
 
     public string AnalyticsUrl { get; set; }
@@ -34,7 +36,7 @@ public class BuildContext : FrostingContext
     public string OutputDirectory { get; set; } = "Builds";
 
     public bool SelfContained { get; set; } = false;
-    
+
     public string Runtime { get; set; }
 
     public BuildContext(ICakeContext context)
@@ -49,6 +51,12 @@ public class BuildContext : FrostingContext
             PathToProject = context.Arguments.GetArgument("project-path");
         }
 
+        bool hasCustomExtensionProjects = context.Arguments.HasArgument("extension-projects");
+        if (hasCustomExtensionProjects)
+        {
+            ExtensionProjectsToInclude = context.Arguments.GetArgument("extension-projects").Split(';');
+        }
+
         bool hasCustomConfiguration = context.Arguments.HasArgument("build-configuration");
         if (hasCustomConfiguration)
         {
@@ -60,7 +68,7 @@ public class BuildContext : FrostingContext
         {
             OutputDirectory = context.Arguments.GetArgument("o");
         }
-        
+
         bool hasSelfContained = context.Arguments.HasArgument("self-contained");
         if (hasSelfContained)
         {
@@ -80,7 +88,7 @@ public class BuildContext : FrostingContext
 }
 
 [TaskName("Default")]
-[IsDependentOn(typeof(BuildProjectTask))]
+[IsDependentOn(typeof(CopyExtensionsTask))]
 public sealed class DefaultTask : FrostingTask<BuildContext>
 {
     public override void Run(BuildContext context)
@@ -144,3 +152,54 @@ public sealed class BuildProjectTask : FrostingTask<BuildContext>
         File.WriteAllText(constantsPath, context.BackedUpConstants);
     }
 }
+
+[TaskName("BuildExtensions")]
+[IsDependentOn(typeof(BuildProjectTask))]
+public sealed class BuildExtensionsTask : FrostingTask<BuildContext>
+{
+    public override void Run(BuildContext context)
+    {
+        context.Log.Information("Building extensions...");
+        foreach (var project in context.ExtensionProjectsToInclude)
+        {
+            var settings = new DotNetPublishSettings() { Configuration = context.BuildConfiguration, };
+
+            context.DotNetPublish(project, settings);
+        }
+    }
+}
+
+[TaskName("CopyExtensions")]
+[IsDependentOn(typeof(BuildExtensionsTask))]
+public sealed class CopyExtensionsTask : FrostingTask<BuildContext>
+{
+    public override void Run(BuildContext context)
+    {
+        context.Log.Information("Copying extensions...");
+        foreach (var project in context.ExtensionProjectsToInclude)
+        {
+            string outputDir = Path.Combine(context.OutputDirectory, "Extensions");
+            string sourceDir = Path.Combine(project, "bin",
+                context.BuildConfiguration, "wasi-wasm", "Extensions");
+
+            CopyDirectoryContents(sourceDir, outputDir, context);
+        }
+    }
+
+    private void CopyDirectoryContents(string sourceDir, string targetDir, BuildContext context)
+    {
+        if (!Directory.Exists(targetDir))
+        {
+            Directory.CreateDirectory(targetDir);
+        }
+
+        context.Log.Information($"Copying contents of {sourceDir} to {targetDir}");
+
+        foreach (var file in Directory.GetFiles(sourceDir))
+        {
+            string targetFile = Path.Combine(targetDir, Path.GetFileName(file));
+            context.Log.Information($"Copying {file} to {targetFile}");
+            File.Copy(file, targetFile, true);
+        }
+    }
+}

BIN
src/PixiEditor/Extensions/PixiEditor.Beta.pixiext


+ 0 - 3
src/PixiEditor/PixiEditor.csproj

@@ -132,9 +132,6 @@
     <None Include="../../Third Party Licenses/**" LinkBase="Third Party Licenses/">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Update="Extensions\PixiEditor.Beta.pixiext">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
   </ItemGroup>
 
   <ItemGroup>