-
Notifications
You must be signed in to change notification settings - Fork 808
Expand file tree
/
Copy pathPipPkgOperationHelper.cs
More file actions
70 lines (60 loc) · 2.28 KB
/
PipPkgOperationHelper.cs
File metadata and controls
70 lines (60 loc) · 2.28 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
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
namespace UniGetUI.PackageEngine.Managers.PipManager;
internal sealed class PipPkgOperationHelper : BasePkgOperationHelper
{
public PipPkgOperationHelper(Pip manager) : base(manager) { }
protected override IReadOnlyList<string> _getOperationParameters(
IPackage package,
IInstallationOptions 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")
}];
parameters.AddRange([
options.Version.Any()? $"{package.Id}=={options.Version}" : package.Id,
"--no-input",
"--no-color",
"--no-cache"
]);
if (options.CustomParameters is not null)
parameters.AddRange(options.CustomParameters);
if (operation is OperationType.Uninstall)
{
parameters.Add("--yes");
}
else
{
if (options.PreRelease)
parameters.Add("--pre");
if (package.OverridenOptions.Scope == PackageScope.User ||
(package.OverridenOptions.Scope is null && options.InstallationScope == PackageScope.User))
parameters.Add("--user");
}
parameters.Add(Pip.GetProxyArgument());
return parameters;
}
protected override OperationVeredict _getOperationResult(
IPackage package,
OperationType operation,
IReadOnlyList<string> processOutput,
int returnCode)
{
if (returnCode == 0)
{
return OperationVeredict.Success;
}
string output_string = string.Join("\n", processOutput);
if (output_string.Contains("--user") && package.OverridenOptions.Scope != PackageScope.User)
{
package.OverridenOptions.Scope = PackageScope.User;
return OperationVeredict.AutoRetry;
}
return OperationVeredict.Failure;
}
}