mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-09-21 22:45:20 +00:00
Support for additional dotnet publish flags.
This commit is contained in:
52
ElectronNET.CLI/Commands/BuildCommand.cs
Normal file → Executable file
52
ElectronNET.CLI/Commands/BuildCommand.cs
Normal file → Executable file
@@ -23,6 +23,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: '-- [-a|--arch <ARCHITECTURE>] [-f | --framework<FRAMEWORK>] [--force] [--no-dependencies] [--no-incremental] [--no-restore] [--nologo]" + Environment.NewLine +
|
||||
" [--no-self-contained] [--os <OS>] [--self-contained [true|false]] [--source <SOURCE>] [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]'" + Environment.NewLine +
|
||||
" to add additional dot net publish arguments." + 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 \"";
|
||||
|
||||
public static IList<CommandOption> CommandOptions { get; set; } = new List<CommandOption>();
|
||||
@@ -107,8 +110,15 @@ namespace ElectronNET.CLI.Commands
|
||||
var dotNetPublishFlags = GetDotNetPublishFlags(parser);
|
||||
|
||||
var command =
|
||||
$"dotnet publish -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}"))}";
|
||||
|
||||
// add any additional dotnet flags
|
||||
var dotnetFlags = GetDotNetArgs(_args);
|
||||
if (dotnetFlags.Any())
|
||||
{
|
||||
command += " " + string.Join(" ", dotnetFlags);
|
||||
}
|
||||
|
||||
// output the command
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine(command);
|
||||
@@ -206,6 +216,46 @@ namespace ElectronNET.CLI.Commands
|
||||
});
|
||||
}
|
||||
|
||||
private static List<string> DotNetFlagsWithValuesReserved = new List<string>
|
||||
{
|
||||
"-o", "--output", "-r", "--runtime", "-c", "--configuration"
|
||||
};
|
||||
private static List<string> DotNetFlagsToIgnore = new List<string>
|
||||
{
|
||||
"--interactive", "-h", "--help"
|
||||
};
|
||||
private List<string> GetDotNetArgs(string[] args)
|
||||
{
|
||||
if (!args.Contains("--")) return new List<string> { "--self-contained" };
|
||||
|
||||
var list = args
|
||||
.SkipWhile(i => "--".Equals(i, StringComparison.OrdinalIgnoreCase))
|
||||
.Skip(1)
|
||||
.Except(DotNetFlagsToIgnore)
|
||||
.ToList();
|
||||
|
||||
// ensure the args flag is removed
|
||||
list.Remove("--");
|
||||
|
||||
// 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<string, string> GetDotNetPublishFlags(SimpleCommandLineParser parser)
|
||||
{
|
||||
var dotNetPublishFlags = new Dictionary<string, string>
|
||||
|
||||
15
README.md
15
README.md
@@ -148,6 +148,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 `--` flag at the end of your command 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 -- --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
|
||||
|
||||
Reference in New Issue
Block a user