Skip to content

Commit

Permalink
Merge pull request #2557 from marticliment/overriden-installation-opt…
Browse files Browse the repository at this point in the history
…ions

Add OverridenInstallationOptions to Packages
  • Loading branch information
marticliment authored Aug 28, 2024
2 parents 82bc51c + 3b16792 commit 6a0dba1
Show file tree
Hide file tree
Showing 60 changed files with 359 additions and 394 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Classes;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Classes;

Expand Down
4 changes: 2 additions & 2 deletions src/ExternalLibraries.FilePickers/Classes/Helper.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Enums;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Interfaces;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Classes;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using ExternalLibraries.Pickers.Classes;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Classes;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using ExternalLibraries.Pickers.Classes;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Classes;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
6 changes: 3 additions & 3 deletions src/ExternalLibraries.FilePickers/Interfaces/IFileDialog.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using ExternalLibraries.Pickers.Enums;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
4 changes: 2 additions & 2 deletions src/ExternalLibraries.FilePickers/Interfaces/IModalWindow.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using ExternalLibraries.Pickers.Guids;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
6 changes: 3 additions & 3 deletions src/ExternalLibraries.FilePickers/Interfaces/IShellItem.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using ExternalLibraries.Pickers.Enums;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using ExternalLibraries.Pickers.Enums;
using ExternalLibraries.Pickers.Guids;
using ExternalLibraries.Pickers.Structures;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace ExternalLibraries.Pickers.Interfaces;

Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.Core.LanguageEngine/LanguageEngine.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Jeffijoe.MessageFormat;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Text.Json.Nodes;
using Jeffijoe.MessageFormat;
using UniGetUI.Core.Data;
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.Interface.BackgroundApi/BackgroundApi.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Text;
using Nancy;
using Nancy.Hosting.Self;
using System.Text;
using UniGetUI.Core.Data;
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
Expand Down
5 changes: 2 additions & 3 deletions src/UniGetUI.PAckageEngine.Interfaces/IPackage.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.ComponentModel;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Classes.Serializable;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Structs;

namespace UniGetUI.PackageEngine.Interfaces
{
Expand All @@ -19,8 +19,7 @@ public interface IPackage : INotifyPropertyChanged, IEquatable<IPackage>
public IPackageManager Manager { get; }
public string NewVersion { get; }
public bool IsUpgradable { get; }
public PackageScope Scope { get; set; }
public string SourceAsString { get; }
public ref OverridenInstallationOptions OverridenOptions { get; }
public string AutomationName { get; }

/// <summary>
Expand Down
2 changes: 0 additions & 2 deletions src/UniGetUI.PAckageEngine.Interfaces/IPackageManager.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces.ManagerProviders;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.ManagerClasses.Manager;
Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.PAckageEngine.Interfaces/ManagerProperties.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Interfaces;

namespace UniGetUI.PackageEngine.ManagerClasses.Manager
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ OperationType operation
/// </summary>
public abstract OperationVeredict GetOperationResult(
IPackage package,
IInstallationOptions options,
OperationType operation,
IEnumerable<string> processOutput,
int returnCode
Expand Down
3 changes: 2 additions & 1 deletion src/UniGetUI.PackageEngine.Enums/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum OperationVeredict
{
Succeeded,
Failed,
Canceled,
RestartRequired,
AutoRetry,
}
Expand All @@ -40,7 +41,7 @@ public enum OperationStatus
Running,
Succeeded,
Failed,
Cancelled
Canceled
}

public enum OperationType
Expand Down
14 changes: 14 additions & 0 deletions src/UniGetUI.PackageEngine.Enums/OverridenInstallationOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using UniGetUI.PackageEngine.Enums;

namespace UniGetUI.PackageEngine.Structs;
public struct OverridenInstallationOptions
{
public PackageScope? Scope;
public bool? RunAsAdministrator;

public OverridenInstallationOptions(PackageScope? scope = null, bool? runAsAdministrator = null)
{
Scope = scope;
RunAsAdministrator = runAsAdministrator;
}
}
8 changes: 3 additions & 5 deletions src/UniGetUI.PackageEngine.Managers.Chocolatey/Chocolatey.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,20 @@
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
using UniGetUI.Core.Tools;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.ManagerClasses.Manager;
using UniGetUI.PackageEngine.Managers.Chocolatey;
using UniGetUI.PackageEngine.Managers.PowerShellManager;
using UniGetUI.PackageEngine.PackageClasses;
using UniGetUI.PackageEngine.ManagerClasses.Classes;

namespace UniGetUI.PackageEngine.Managers.ChocolateyManager
{
public class Chocolatey : BaseNuGet
{
public static new string[] FALSE_PACKAGE_NAMES = [""];
public static new string[] FALSE_PACKAGE_IDS = ["Directory", "", "Did", "Features?", "Validation", "-", "being", "It", "Error", "L'accs", "Maximum", "This", "Output is package name ", "operable", "Invalid"];
public static new string[] FALSE_PACKAGE_VERSIONS = ["", "Did", "Features?", "Validation", "-", "being", "It", "Error", "L'accs", "Maximum", "This", "packages", "current version", "installed version", "is", "program", "validations", "argument", "no"];

Expand Down Expand Up @@ -63,7 +61,7 @@ public Chocolatey()
PackageDetailsProvider = new ChocolateyDetailsProvider(this);
OperationProvider = new ChocolateyOperationProvider(this);
}

protected override async Task<Package[]> GetAvailableUpdates_UnSafe()
{
Process p = new()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Managers.ChocolateyManager;
using UniGetUI.PackageEngine.PackageClasses;

namespace UniGetUI.PackageEngine.Managers.ChocolateyManager;
internal sealed class ChocolateyOperationProvider : BaseOperationProvider<Chocolatey>
Expand All @@ -28,7 +21,7 @@ public override IEnumerable<string> GetOperationParameters(
}];
parameters.AddRange([package.Id, "-y"]);

if (options.CustomParameters is not null)
if (options.CustomParameters.Count > 0)
parameters.AddRange(options.CustomParameters);

if (options.InteractiveInstallation)
Expand Down Expand Up @@ -56,7 +49,6 @@ public override IEnumerable<string> GetOperationParameters(

public override OperationVeredict GetOperationResult(
IPackage package,
IInstallationOptions options,
OperationType operation,
IEnumerable<string> processOutput,
int returnCode)
Expand All @@ -73,12 +65,12 @@ public override OperationVeredict GetOperationResult(


string output_string = string.Join("\n", processOutput);
if (!options.RunAsAdministrator &&
if (!package.OverridenOptions.RunAsAdministrator != true &&
(output_string.Contains("Run as administrator")
|| output_string.Contains("The requested operation requires elevation")
|| output_string.Contains("ERROR: Exception calling \"CreateDirectory\" with \"1\" argument(s): \"Access to the path")) )
{
options.RunAsAdministrator = true;
package.OverridenOptions.RunAsAdministrator = true;
return OperationVeredict.AutoRetry;
}

Expand Down
30 changes: 22 additions & 8 deletions src/UniGetUI.PackageEngine.Managers.Dotnet/DotNet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,21 @@
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using UniGetUI.Core.Tools;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.Interface.Enums;
using UniGetUI.PackageEngine.Classes.Manager;
using UniGetUI.PackageEngine.Classes.Manager.Classes;
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.ManagerClasses.Manager;
using UniGetUI.PackageEngine.Managers.PowerShellManager;
using UniGetUI.PackageEngine.PackageClasses;
using UniGetUI.PackageEngine.ManagerClasses.Classes;
using UniGetUI.PackageEngine.Structs;

namespace UniGetUI.PackageEngine.Managers.DotNetManager
{
public class DotNet : BaseNuGet
{
public static new string[] FALSE_PACKAGE_NAMES = [""];
public static new string[] FALSE_PACKAGE_IDS = [""];
public static new string[] FALSE_PACKAGE_VERSIONS = [""];

Expand Down Expand Up @@ -140,7 +139,15 @@ protected override async Task<Package[]> GetAvailableUpdates_UnSafe()
continue;
}

Packages.Add(new Package(CoreTools.FormatAsName(elements[0]), elements[0], elements[1], elements[2], DefaultSource, this, PackageScope.Global));
Packages.Add(new Package(
CoreTools.FormatAsName(elements[0]),
elements[0],
elements[1],
elements[2],
DefaultSource,
this,
new(PackageScope.Global)
));
}
}
logger.AddToStdErr(await p.StandardError.ReadToEndAsync());
Expand All @@ -153,14 +160,14 @@ protected override async Task<Package[]> GetAvailableUpdates_UnSafe()
protected override async Task<Package[]> GetInstalledPackages_UnSafe()
{
List<Package> Packages = [];
foreach (PackageScope scope in new PackageScope[] { PackageScope.Local, PackageScope.Global })
foreach (var options in new OverridenInstallationOptions[] { new(PackageScope.Local), new(PackageScope.Global) })
{
Process p = new()
{
StartInfo = new ProcessStartInfo
{
FileName = Status.ExecutablePath,
Arguments = Properties.ExecutableCallArgs + " list" + (scope == PackageScope.Global ? " --global" : ""),
Arguments = Properties.ExecutableCallArgs + " list" + (options.Scope == PackageScope.Global ? " --global" : ""),
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
Expand Down Expand Up @@ -202,7 +209,14 @@ protected override async Task<Package[]> GetInstalledPackages_UnSafe()
continue;
}

Packages.Add(new Package(CoreTools.FormatAsName(elements[0]), elements[0], elements[1], DefaultSource, this, scope));
Packages.Add(new Package(
CoreTools.FormatAsName(elements[0]),
elements[0],
elements[1],
DefaultSource,
this,
options
));
}
}
logger.AddToStdErr(await p.StandardError.ReadToEndAsync());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Managers.DotNetManager;
using UniGetUI.PackageEngine.PackageClasses;
using Windows.ApplicationModel.Appointments;

namespace UniGetUI.PackageEngine.Managers.DotNetManager;
internal sealed class DotNetOperationProvider : BaseOperationProvider<DotNet>
Expand All @@ -35,7 +27,8 @@ public override IEnumerable<string> GetOperationParameters(
if (options.CustomInstallLocation != "")
parameters.AddRange(["--tool-path", "\"" + options.CustomInstallLocation + "\""]);

if (options.InstallationScope == PackageScope.Global || (options.InstallationScope is null && package.Scope == PackageScope.Global))
if(package.OverridenOptions.Scope == PackageScope.Global ||
(package.OverridenOptions.Scope is null && options.InstallationScope == PackageScope.Global))
parameters.Add("--global");

if (operation is OperationType.Install or OperationType.Update)
Expand All @@ -55,7 +48,6 @@ public override IEnumerable<string> GetOperationParameters(

public override OperationVeredict GetOperationResult(
IPackage package,
IInstallationOptions options,
OperationType operation,
IEnumerable<string> processOutput,
int returnCode)
Expand Down
Loading

0 comments on commit 6a0dba1

Please sign in to comment.