]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Configuration argument for content packaging (#25569)
authorVasilis <vasilis@pikachu.systems>
Sun, 24 Mar 2024 02:20:34 +0000 (03:20 +0100)
committerGitHub <noreply@github.com>
Sun, 24 Mar 2024 02:20:34 +0000 (13:20 +1100)
* Configuration argument for content packaging

Needed this for something so here we are. I think someone mentioned they wanted this? Welp its here now

* Add client, tiny fixes

Content.Packaging/ClientPackaging.cs
Content.Packaging/CommandLineArgs.cs
Content.Packaging/Program.cs
Content.Packaging/ServerPackaging.cs

index a989ebd968ed6a56a3ec04609253e4f09d20e02d..a66d4ec5b91403aafbdfecd828d30da87a60c6ab 100644 (file)
@@ -13,7 +13,7 @@ public static class ClientPackaging
     /// <summary>
     /// Be advised this can be called from server packaging during a HybridACZ build.
     /// </summary>
-    public static async Task PackageClient(bool skipBuild, IPackageLogger logger)
+    public static async Task PackageClient(bool skipBuild, string configuration, IPackageLogger logger)
     {
         logger.Info("Building client...");
 
@@ -26,7 +26,7 @@ public static class ClientPackaging
                 {
                     "build",
                     Path.Combine("Content.Client", "Content.Client.csproj"),
-                    "-c", "Release",
+                    "-c", configuration,
                     "--nologo",
                     "/v:m",
                     "/t:Rebuild",
index 9f2b075535787cb8c51c523d752cf21f7edbe502..23f661921e0258fc2fd8c0b113c35a754c6202aa 100644 (file)
@@ -31,6 +31,11 @@ public sealed class CommandLineArgs
     /// </summary>
     public bool HybridAcz { get; set; }
 
+    /// <summary>
+    /// Configuration used for when packaging the server. (Release, Debug, Tools)
+    /// </summary>
+    public string Configuration { get; set; }
+
     // CommandLineArgs, 3rd of her name.
     public static bool TryParse(IReadOnlyList<string> args, [NotNullWhen(true)] out CommandLineArgs? parsed)
     {
@@ -39,6 +44,7 @@ public sealed class CommandLineArgs
         var skipBuild = false;
         var wipeRelease = true;
         var hybridAcz = false;
+        var configuration = "Release";
         List<string>? platforms = null;
 
         using var enumerator = args.GetEnumerator();
@@ -89,6 +95,16 @@ public sealed class CommandLineArgs
                 platforms ??= new List<string>();
                 platforms.Add(enumerator.Current);
             }
+            else if (arg == "--configuration")
+            {
+                if (!enumerator.MoveNext())
+                {
+                    Console.WriteLine("No configuration provided");
+                    return false;
+                }
+
+                configuration = enumerator.Current;
+            }
             else if (arg == "--help")
             {
                 PrintHelp();
@@ -106,7 +122,7 @@ public sealed class CommandLineArgs
             return false;
         }
 
-        parsed = new CommandLineArgs(client.Value, skipBuild, wipeRelease, hybridAcz, platforms);
+        parsed = new CommandLineArgs(client.Value, skipBuild, wipeRelease, hybridAcz, platforms, configuration);
         return true;
     }
 
@@ -120,6 +136,7 @@ Options:
   --no-wipe-release     Don't wipe the release folder before creating files.
   --hybrid-acz          Use HybridACZ for server builds.
   --platform            Platform for server builds. Default will output several x64 targets.
+  --configuration       Configuration to use for building the server (Release, Debug, Tools). Default is Release.
 ");
     }
 
@@ -128,12 +145,14 @@ Options:
         bool skipBuild,
         bool wipeRelease,
         bool hybridAcz,
-        List<string>? platforms)
+        List<string>? platforms,
+        string configuration)
     {
         Client = client;
         SkipBuild = skipBuild;
         WipeRelease = wipeRelease;
         HybridAcz = hybridAcz;
         Platforms = platforms;
+        Configuration = configuration;
     }
 }
index ba5924ec3e9ce5b7674211b5379c5168020d7aea..65c0e0131a4f55022d58d3da4676553f4324d48a 100644 (file)
@@ -17,11 +17,11 @@ if (!parsed.SkipBuild)
 
 if (parsed.Client)
 {
-    await ClientPackaging.PackageClient(parsed.SkipBuild, logger);
+    await ClientPackaging.PackageClient(parsed.SkipBuild, parsed.Configuration, logger);
 }
 else
 {
-    await ServerPackaging.PackageServer(parsed.SkipBuild, parsed.HybridAcz, logger, parsed.Platforms);
+    await ServerPackaging.PackageServer(parsed.SkipBuild, parsed.HybridAcz, logger, parsed.Configuration, parsed.Platforms);
 }
 
 void WipeBin()
index ba489629f798060e262865e0c9b48353f609a3b0..d9ca57c4d11f4dde7a39afd2ef0487e6fc063771 100644 (file)
@@ -69,7 +69,7 @@ public static class ServerPackaging
         "zh-Hant"
     };
 
-    public static async Task PackageServer(bool skipBuild, bool hybridAcz, IPackageLogger logger, List<string>? platforms = null)
+    public static async Task PackageServer(bool skipBuild, bool hybridAcz, IPackageLogger logger, string configuration, List<string>? platforms = null)
     {
         if (platforms == null)
         {
@@ -82,7 +82,7 @@ public static class ServerPackaging
             // Rather than hosting the client ZIP on the watchdog or on a separate server,
             //  Hybrid ACZ uses the ACZ hosting functionality to host it as part of the status host,
             //  which means that features such as automatic UPnP forwarding still work properly.
-            await ClientPackaging.PackageClient(skipBuild, logger);
+            await ClientPackaging.PackageClient(skipBuild, configuration, logger);
         }
 
         // Good variable naming right here.
@@ -91,13 +91,13 @@ public static class ServerPackaging
             if (!platforms.Contains(platform.Rid))
                 continue;
 
-            await BuildPlatform(platform, skipBuild, hybridAcz, logger);
+            await BuildPlatform(platform, skipBuild, hybridAcz, configuration, logger);
         }
     }
 
-    private static async Task BuildPlatform(PlatformReg platform, bool skipBuild, bool hybridAcz, IPackageLogger logger)
+    private static async Task BuildPlatform(PlatformReg platform, bool skipBuild, bool hybridAcz, string configuration, IPackageLogger logger)
     {
-        logger.Info($"Building project for {platform}...");
+        logger.Info($"Building project for {platform.TargetOs}...");
 
         if (!skipBuild)
         {
@@ -108,7 +108,7 @@ public static class ServerPackaging
                 {
                     "build",
                     Path.Combine("Content.Server", "Content.Server.csproj"),
-                    "-c", "Release",
+                    "-c", configuration,
                     "--nologo",
                     "/v:m",
                     $"/p:TargetOs={platform.TargetOs}",
@@ -118,7 +118,7 @@ public static class ServerPackaging
                 }
             });
 
-            await PublishClientServer(platform.Rid, platform.TargetOs);
+            await PublishClientServer(platform.Rid, platform.TargetOs, configuration);
         }
 
         logger.Info($"Packaging {platform.Rid} server...");
@@ -137,7 +137,7 @@ public static class ServerPackaging
         logger.Info($"Finished packaging server in {sw.Elapsed}");
     }
 
-    private static async Task PublishClientServer(string runtime, string targetOs)
+    private static async Task PublishClientServer(string runtime, string targetOs, string configuration)
     {
         await ProcessHelpers.RunCheck(new ProcessStartInfo
         {
@@ -147,7 +147,7 @@ public static class ServerPackaging
                 "publish",
                 "--runtime", runtime,
                 "--no-self-contained",
-                "-c", "Release",
+                "-c", configuration,
                 $"/p:TargetOs={targetOs}",
                 "/p:FullRelease=True",
                 "/m",