diff --git a/ElectronNET.CLI/Commands/BuildCommand.cs b/ElectronNET.CLI/Commands/BuildCommand.cs index 991c68e..5709cc1 100644 --- a/ElectronNET.CLI/Commands/BuildCommand.cs +++ b/ElectronNET.CLI/Commands/BuildCommand.cs @@ -24,6 +24,9 @@ namespace ElectronNET.CLI.Commands "Optional: '/install-modules' to force node module install. Implied by '/package-json'" + Environment.NewLine + "Optional: '/Version' to specify the version that should be applied to both the `dotnet publish` and `electron-builder` commands. Implied by '/Version'" + Environment.NewLine + "Optional: '/p:[property]' or '/property:[property]' to pass in dotnet publish properties. Example: '/property:Version=1.0.0' to override the FileVersion" + Environment.NewLine + + "Optional: '/dotnet-publish [-a|--arch ] [-f | --framework] [--force] [--no-dependencies] [--no-incremental] [--no-restore] [--nologo]" + Environment.NewLine + + " [--no-self-contained] [--os ] [--self-contained [true|false]] [--source ] [-v|--verbosity ] [--version-suffix ]'" + Environment.NewLine + + " to add additional dot net publish arguments." + Environment.NewLine + Environment.NewLine + "Full example for a 32bit debug build with electron prune: build /target custom win7-x86;win32 /dotnet-configuration Debug /electron-arch ia32 /electron-params \"--prune=true \"" + Environment.NewLine + "Full example to pass publish parameters: build /PublishReadyToRun false /PublishSingleFile false /target custom win7-x86;win32 /dotnet-configuration Debug /electron-arch ia32 /electron-params \"--prune=true \""; @@ -49,6 +52,7 @@ namespace ElectronNET.CLI.Commands private string _paramPublishReadyToRun = "PublishReadyToRun"; private string _paramPublishSingleFile = "PublishSingleFile"; private string _paramVersion = "Version"; + private string _paramDotNetPublish = "dotnet-publish"; public Task ExecuteAsync() { @@ -116,8 +120,19 @@ namespace ElectronNET.CLI.Commands } var command = +<<<<<<< HEAD $"dotnet publish {project} -r {platformInfo.NetCorePublishRid} -c \"{configuration}\" --output \"{tempBinPath}\" {string.Join(' ', dotNetPublishFlags.Select(kvp => $"{kvp.Key}={kvp.Value}"))} --self-contained"; +======= + $"dotnet publish -r {platformInfo.NetCorePublishRid} -c \"{configuration}\" --output \"{tempBinPath}\" {string.Join(' ', dotNetPublishFlags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}"; +>>>>>>> 5338749e4d2b0fcd9c46bad1a61e5c7d7d0f18cc + // add any additional dotnet flags + var dotnetFlags = GetDotNetArgs(parser); + if (dotnetFlags.Any()) + { + command += " " + string.Join(" ", dotnetFlags); + } + // output the command Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(command); @@ -228,7 +243,46 @@ namespace ElectronNET.CLI.Commands }); } +<<<<<<< HEAD internal static Dictionary GetDotNetPublishFlags(SimpleCommandLineParser parser, string defaultReadyToRun, string defaultSingleFile) +======= + private static List DotNetFlagsWithValuesReserved = new List + { + "-o", "--output", "-r", "--runtime", "-c", "--configuration" + }; + private static List DotNetFlagsToIgnore = new List + { + "--interactive", "-h", "--help" + }; + private List GetDotNetArgs(SimpleCommandLineParser parser) + { + if (!parser.TryGet(_paramDotNetPublish, out var args)) return new List { "--self-contained" }; + + var list = args + .Except(DotNetFlagsToIgnore) + .ToList(); + + // remove flags that are handled by design + foreach (var flag in DotNetFlagsWithValuesReserved) + { + var f = list.IndexOf(flag); + if (f > -1) + { + list.RemoveRange(f, 2); + } + } + + // enforce backwards compatibility + if (!list.Contains("--no-self-contained") && !list.Contains("--self-contained")) + { + list.Add("--self-contained"); + } + + return list; + } + + private Dictionary GetDotNetPublishFlags(SimpleCommandLineParser parser) +>>>>>>> 5338749e4d2b0fcd9c46bad1a61e5c7d7d0f18cc { var dotNetPublishFlags = new Dictionary { diff --git a/README.md b/README.md index fb41d8a..2100c68 100644 --- a/README.md +++ b/README.md @@ -151,6 +151,21 @@ For certain NuGet packages or certain scenarios you may want to build a pure x86 electronize build /target custom "win7-x86;win32" /electron-arch ia32 ``` +### Additional DotNet Publish Flags + +For certain scenarios additional `dotnet publish` arguments may be required. To add additional publish flags use the `/dotnet-publish` flag and add any additional publish flags after. For example if you want to skip the default nuget restore you can do that like this: + +``` +electronize build /target osx /dotnet-publish --no-restore +``` + +#### Self-Contained +> `--self-contained` is enabled by default, to disable use `--no-self-contained` or `--self-contained false` + +#### Ignored Flags +> `-r|--runtime`, `-o|--output`, `-c|--configuration`, `--interactive` & `-h|--help` are ignored by design + + The end result should be an electron app under your __/bin/desktop__ folder. ### Note