diff options
author | Rob Mensching <rob@firegiant.com> | 2022-11-08 14:58:05 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-11-08 16:20:25 -0800 |
commit | c843b47d6233153fa961c6d0e61edf7cedf255bb (patch) | |
tree | 9eae6badd42d3badb8665b7414b4d44ca48d6ae1 /src/internal/WixInternal.TestSupport/DotnetRunner.cs | |
parent | 7e498d6348c26583972ea1cdf7d51dadc8f5b792 (diff) | |
download | wix-c843b47d6233153fa961c6d0e61edf7cedf255bb.tar.gz wix-c843b47d6233153fa961c6d0e61edf7cedf255bb.tar.bz2 wix-c843b47d6233153fa961c6d0e61edf7cedf255bb.zip |
Separate WixInternal content from official WixToolset namespace
Diffstat (limited to 'src/internal/WixInternal.TestSupport/DotnetRunner.cs')
-rw-r--r-- | src/internal/WixInternal.TestSupport/DotnetRunner.cs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/internal/WixInternal.TestSupport/DotnetRunner.cs b/src/internal/WixInternal.TestSupport/DotnetRunner.cs new file mode 100644 index 00000000..befd8952 --- /dev/null +++ b/src/internal/WixInternal.TestSupport/DotnetRunner.cs | |||
@@ -0,0 +1,57 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixInternal.TestSupport | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.IO; | ||
8 | |||
9 | public class DotnetRunner : ExternalExecutable | ||
10 | { | ||
11 | private static readonly object InitLock = new object(); | ||
12 | private static bool Initialized; | ||
13 | private static DotnetRunner Instance; | ||
14 | |||
15 | public static ExternalExecutableResult Execute(string command, string[] arguments = null) => | ||
16 | InitAndExecute(command, arguments); | ||
17 | |||
18 | private static ExternalExecutableResult InitAndExecute(string command, string[] arguments) | ||
19 | { | ||
20 | lock (InitLock) | ||
21 | { | ||
22 | if (!Initialized) | ||
23 | { | ||
24 | Initialized = true; | ||
25 | var dotnetPath = Environment.GetEnvironmentVariable("DOTNET_HOST_PATH"); | ||
26 | if (String.IsNullOrEmpty(dotnetPath) || !File.Exists(dotnetPath)) | ||
27 | { | ||
28 | dotnetPath = "dotnet"; | ||
29 | } | ||
30 | |||
31 | Instance = new DotnetRunner(dotnetPath); | ||
32 | } | ||
33 | } | ||
34 | |||
35 | return Instance.ExecuteCore(command, arguments); | ||
36 | } | ||
37 | |||
38 | private DotnetRunner(string exePath) : base(exePath) { } | ||
39 | |||
40 | private ExternalExecutableResult ExecuteCore(string command, string[] arguments) | ||
41 | { | ||
42 | var total = new List<string> | ||
43 | { | ||
44 | command, | ||
45 | }; | ||
46 | |||
47 | if (arguments != null) | ||
48 | { | ||
49 | total.AddRange(arguments); | ||
50 | } | ||
51 | |||
52 | var args = CombineArguments(total); | ||
53 | var mergeErrorIntoOutput = true; | ||
54 | return this.Run(args, mergeErrorIntoOutput); | ||
55 | } | ||
56 | } | ||
57 | } | ||