-
Notifications
You must be signed in to change notification settings - Fork 851
Expand file tree
/
Copy pathDotNetPkgOperationHelper.cs
More file actions
78 lines (66 loc) · 2.69 KB
/
Copy pathDotNetPkgOperationHelper.cs
File metadata and controls
78 lines (66 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System.Runtime.InteropServices;
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Serializable;
using Architecture = UniGetUI.PackageEngine.Enums.Architecture;
namespace UniGetUI.PackageEngine.Managers.DotNetManager;
internal sealed class DotNetPkgOperationHelper : BasePkgOperationHelper
{
public DotNetPkgOperationHelper(DotNet manager) : base(manager) { }
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options,
OperationType operation)
{
List<string> parameters =
[
operation switch
{
OperationType.Install => Manager.Properties.InstallVerb,
OperationType.Update => Manager.Properties.UpdateVerb,
OperationType.Uninstall => Manager.Properties.UninstallVerb,
_ => throw new InvalidDataException("Invalid package operation")
},
package.Id,
];
if (options.CustomParameters is not null)
parameters.AddRange(options.CustomParameters);
if (options.CustomInstallLocation != "")
parameters.AddRange(["--tool-path", "\"" + options.CustomInstallLocation + "\""]);
if (package.OverridenOptions.Scope is PackageScope.Global ||
(package.OverridenOptions.Scope is null && options.InstallationScope is PackageScope.Global))
parameters.Add("--global");
if (operation is OperationType.Install or OperationType.Update)
{
parameters.AddRange(options.Architecture switch
{
Architecture.x86 => ["--arch", "x86"],
Architecture.x64 => ["--arch", "x64"],
Architecture.arm32 => ["--arch", "arm32"],
Architecture.arm64 => ["--arch", "arm64"],
_ => []
});
}
if (operation is OperationType.Install)
{
if (options.Version != "")
{
parameters.AddRange(["--version", options.Version]);
}
}
return parameters;
}
protected override OperationVeredict _getOperationResult(
IPackage package,
OperationType operation,
IReadOnlyList<string> processOutput,
int returnCode)
{
if (returnCode is not 0 && package.OverridenOptions.Scope is not PackageScope.Global)
{
package.OverridenOptions.Scope = PackageScope.Global;
return OperationVeredict.AutoRetry;
}
return returnCode is 0 ? OperationVeredict.Success : OperationVeredict.Failure;
}
}