Skip to content

Commit 0dcbb86

Browse files
authored
Merge pull request #3000 from marticliment/finish-manager-modularization
Finish the modularization of package managers.
2 parents e9c5fc9 + ea3ef7d commit 0dcbb86

File tree

75 files changed

+592
-929
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+592
-929
lines changed

src/UniGetUI.Core.Classes.Tests/SingletonBaseTest.cs

-37
This file was deleted.

src/UniGetUI.Core.Classes/SingletonBase.cs

-10
This file was deleted.

src/UniGetUI.Core.IconStore/IconCacheEngine.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.ObjectModel;
2-
using System.Drawing;
32
using System.Security.Cryptography;
43
using Windows.ApplicationModel;
54
using Windows.Graphics.Imaging;
@@ -243,7 +242,7 @@ private static void DownsizeImage(string cachedIconFile, string extension)
243242
int width, height;
244243

245244
using (var fileStream = new FileStream(cachedIconFile, FileMode.Open, FileAccess.Read, FileShare.Read))
246-
using (var image = Image.FromStream(fileStream, false, false))
245+
using (var image = System.Drawing.Image.FromStream(fileStream, false, false))
247246
{
248247
height = image.Height;
249248
width = image.Width;

src/UniGetUI.PAckageEngine.Interfaces/IPackageManager.cs

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
using UniGetUI.PackageEngine.Classes.Manager.Classes;
12
using UniGetUI.PackageEngine.Classes.Manager.ManagerHelpers;
23
using UniGetUI.PackageEngine.Interfaces.ManagerProviders;
34
using UniGetUI.PackageEngine.ManagerClasses.Classes;
45
using UniGetUI.PackageEngine.ManagerClasses.Manager;
56

67
namespace UniGetUI.PackageEngine.Interfaces
78
{
8-
public interface IPackageManager : ISourceProvider, IPackageDetailsProvider, IOperationProvider
9+
public interface IPackageManager
910
{
1011
public ManagerProperties Properties { get; }
1112
public ManagerCapabilities Capabilities { get; }
@@ -15,10 +16,10 @@ public interface IPackageManager : ISourceProvider, IPackageDetailsProvider, IOp
1516
public IManagerSource DefaultSource { get; }
1617
public bool ManagerReady { get; }
1718
public IManagerLogger TaskLogger { get; }
18-
19-
public ISourceProvider? SourceProvider { get; }
20-
public IPackageDetailsProvider? PackageDetailsProvider { get; }
21-
public IOperationProvider? OperationProvider { get; }
19+
public IMultiSourceHelper SourcesHelper { get; }
20+
public IPackageDetailsHelper DetailsHelper { get; }
21+
public IPackageOperationHelper OperationHelper { get; }
22+
public IEnumerable<ManagerDependency> Dependencies { get; }
2223

2324
/// <summary>
2425
/// Initializes the Package Manager (asynchronously). Must be run before using any other method of the manager.
@@ -67,8 +68,5 @@ public interface IPackageManager : ISourceProvider, IPackageDetailsProvider, IOp
6768
/// an example
6869
/// </summary>
6970
public void AttemptFastRepair();
70-
71-
public IManagerSource GetSourceOrDefault(string SourceName);
72-
public IManagerSource? GetSourceIfExists(string SourceName);
7371
}
7472
}

src/UniGetUI.PAckageEngine.Interfaces/ManagerProviders/ISourceProvider.cs renamed to src/UniGetUI.PAckageEngine.Interfaces/ManagerHelpers/IMultiSourceHelper.cs

+9-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
namespace UniGetUI.PackageEngine.Interfaces.ManagerProviders
44
{
5-
public interface ISourceProvider
5+
/// <summary>
6+
/// Has the required methods to handle a package manager that can handle multiple source
7+
/// </summary>
8+
public interface IMultiSourceHelper
69
{
7-
public ISourceFactory SourceFactory { get; }
10+
public ISourceFactory Factory { get; }
811

912
/// <summary>
1013
/// Returns the command-line parameters required to add the given source to the manager.
@@ -27,7 +30,7 @@ public interface ISourceProvider
2730
/// <param name="ReturnCode">The return code of the operation</param>
2831
/// <param name="Output">the command-line output of the operation</param>
2932
/// <returns>An OperationVeredict value</returns>
30-
public OperationVeredict GetAddSourceOperationVeredict(IManagerSource source, int ReturnCode, string[] Output);
33+
public OperationVeredict GetAddOperationVeredict(IManagerSource source, int ReturnCode, string[] Output);
3134

3235
/// <summary>
3336
/// Checks the result of attempting to remove a source
@@ -36,12 +39,14 @@ public interface ISourceProvider
3639
/// <param name="ReturnCode">The return code of the operation</param>
3740
/// <param name="Output">the command-line output of the operation</param>
3841
/// <returns>An OperationVeredict value</returns>
39-
public OperationVeredict GetRemoveSourceOperationVeredict(IManagerSource source, int ReturnCode, string[] Output);
42+
public OperationVeredict GetRemoveOperationVeredict(IManagerSource source, int ReturnCode, string[] Output);
4043

4144
/// <summary>
4245
/// Returns the available sources
4346
/// </summary>
4447
/// <returns>An array of ManagerSource objects</returns>
4548
public IEnumerable<IManagerSource> GetSources();
49+
50+
4651
}
4752
}

src/UniGetUI.PAckageEngine.Interfaces/ManagerProviders/IPackageDetailsProvider.cs renamed to src/UniGetUI.PAckageEngine.Interfaces/ManagerHelpers/IPackageDetailsHelper.cs

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
namespace UniGetUI.PackageEngine.Interfaces.ManagerProviders
44
{
5-
public interface IPackageDetailsProvider
5+
/// <summary>
6+
/// Provides useful information about the packages
7+
/// </summary>
8+
public interface IPackageDetailsHelper
69
{
710
/// <summary>
811
/// Returns a PackageDetails object that represents the details for the given Package object.
@@ -11,7 +14,7 @@ public interface IPackageDetailsProvider
1114
/// </summary>
1215
/// <param name="details">The PackageDetails instance to load</param>
1316
/// <returns>A PackageDetails object</returns>
14-
public void GetPackageDetails(IPackageDetails details);
17+
public void GetDetails(IPackageDetails details);
1518

1619
/// <summary>
1720
/// Returns the available versions to install for the given package.
@@ -20,28 +23,28 @@ public interface IPackageDetailsProvider
2023
/// </summary>
2124
/// <param name="package">The package from which to load its versions</param>
2225
/// <returns>An array of stings containing the found versions, an empty array if none.</returns>
23-
public IEnumerable<string> GetPackageVersions(IPackage package);
26+
public IEnumerable<string> GetVersions(IPackage package);
2427

2528
/// <summary>
2629
/// Returns an Uri pointing to the icon of this package.
2730
/// The uri may be either a ms-appx:/// url or a http(s):// protocol url
2831
/// </summary>
2932
/// <param name="package">The package from which to load the icon</param>
3033
/// <returns>A full path to a valid icon file</returns>
31-
public CacheableIcon? GetPackageIconUrl(IPackage package);
34+
public CacheableIcon? GetIcon(IPackage package);
3235

3336
/// <summary>
3437
/// Returns the URLs to the screenshots (if any) of this package.
3538
/// </summary>
3639
/// <param name="package">The package from which to load the screenshots</param>
3740
/// <returns>An array with valid URIs to the screenshots</returns>
38-
public IEnumerable<Uri> GetPackageScreenshotsUrl(IPackage package);
41+
public IEnumerable<Uri> GetScreenshots(IPackage package);
3942

4043
/// <summary>
4144
/// Returns the location where the package is installed, or null if the location cannot be loaded.
4245
/// </summary>
4346
/// <param name="package">The package for which to get the location</param>
4447
/// <returns>A valid path in the form of a string or a null object</returns>
45-
public string? GetPackageInstallLocation(IPackage package);
48+
public string? GetInstallLocation(IPackage package);
4649
}
4750
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using UniGetUI.PackageEngine.Enums;
2+
3+
namespace UniGetUI.PackageEngine.Interfaces.ManagerProviders
4+
{
5+
/// <summary>
6+
/// Handled the process of installing and uninstalling packages
7+
/// </summary>
8+
public interface IPackageOperationHelper
9+
{
10+
/// <summary>
11+
/// Returns the list of arguments that need to be passed to the Package Manager executable so
12+
/// that the requested operation is performed over the given package, with its corresponding
13+
/// installation options.
14+
/// </summary>
15+
public IEnumerable<string> GetParameters(
16+
IPackage package,
17+
IInstallationOptions options,
18+
OperationType operation
19+
);
20+
21+
/// <summary>
22+
/// Returns the veredict of the given package operation, given the package, the operation type,
23+
/// the corresponding output and the return code.
24+
/// </summary>
25+
public OperationVeredict GetResult(
26+
IPackage package,
27+
OperationType operation,
28+
IEnumerable<string> processOutput,
29+
int returnCode
30+
);
31+
}
32+
}

src/UniGetUI.PAckageEngine.Interfaces/ManagerProviders/IOperationProvider.cs

-27
This file was deleted.

src/UniGetUI.PackageEngine.Managers.Cargo/Cargo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public Cargo()
5454
KnownSources = [cratesIo]
5555
};
5656

57-
PackageDetailsProvider = new CargoPackageDetailsProvider(this);
58-
OperationProvider = new CargoOperationProvider(this);
57+
DetailsHelper = new CargoPkgDetailsHelper(this);
58+
OperationHelper = new CargoPkgOperationHelper(this);
5959
}
6060

6161
protected override IEnumerable<Package> FindPackages_UnSafe(string query)

src/UniGetUI.PackageEngine.Managers.Cargo/Providers/CargoPackageDetailsProvider.cs renamed to src/UniGetUI.PackageEngine.Managers.Cargo/Helpers/CargoPkgDetailsHelper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using UniGetUI.PackageEngine.ManagerClasses.Manager;
66

77
namespace UniGetUI.PackageEngine.Managers.CargoManager;
8-
internal sealed class CargoPackageDetailsProvider(Cargo manager) : BasePackageDetailsProvider<PackageManager>(manager)
8+
internal sealed class CargoPkgDetailsHelper(Cargo manager) : BasePkgDetailsHelper(manager)
99
{
1010
protected override void GetDetails_UnSafe(IPackageDetails details)
1111
{

src/UniGetUI.PackageEngine.Managers.Cargo/Providers/CargoOperationProvider.cs renamed to src/UniGetUI.PackageEngine.Managers.Cargo/Helpers/CargoPkgOperationHelper.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace UniGetUI.PackageEngine.Managers.CargoManager;
66

7-
internal sealed class CargoOperationProvider(Cargo cargo) : BaseOperationProvider<Cargo>(cargo)
7+
internal sealed class CargoPkgOperationHelper(Cargo cargo) : PackagePkgOperationHelper(cargo)
88
{
9-
public override IEnumerable<string> GetOperationParameters(IPackage package, IInstallationOptions options, OperationType operation)
9+
protected override IEnumerable<string> _getOperationParameters(IPackage package, IInstallationOptions options, OperationType operation)
1010
{
1111
var version = options.Version == string.Empty ? package.Version : options.Version;
1212
List<string> parameters = operation switch
@@ -20,7 +20,7 @@ public override IEnumerable<string> GetOperationParameters(IPackage package, IIn
2020
return parameters;
2121
}
2222

23-
public override OperationVeredict GetOperationResult(IPackage package, OperationType operation, IEnumerable<string> processOutput, int returnCode)
23+
protected override OperationVeredict _getOperationResult(IPackage package, OperationType operation, IEnumerable<string> processOutput, int returnCode)
2424
{
2525
return returnCode == 0 ? OperationVeredict.Succeeded : OperationVeredict.Failed;
2626
}

src/UniGetUI.PackageEngine.Managers.Chocolatey/Chocolatey.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ public Chocolatey()
5757

5858
};
5959

60-
SourceProvider = new ChocolateySourceProvider(this);
61-
PackageDetailsProvider = new ChocolateyDetailsProvider(this);
62-
OperationProvider = new ChocolateyOperationProvider(this);
60+
SourcesHelper = new ChocolateySourceHelper(this);
61+
DetailsHelper = new ChocolateyDetailsHelper(this);
62+
OperationHelper = new ChocolateyPkgOperationHelper(this);
6363
}
6464

6565
protected override IEnumerable<Package> GetAvailableUpdates_UnSafe()

src/UniGetUI.PackageEngine.Managers.Chocolatey/Providers/ChocolateyDetailsProvider.cs renamed to src/UniGetUI.PackageEngine.Managers.Chocolatey/Helpers/ChocolateyDetailsHelper.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
namespace UniGetUI.PackageEngine.Managers.Chocolatey
88
{
9-
public class ChocolateyDetailsProvider : BaseNuGetDetailsProvider
9+
public class ChocolateyDetailsHelper : BaseNuGetDetailsHelper
1010
{
11-
public ChocolateyDetailsProvider(BaseNuGet manager) : base(manager)
11+
public ChocolateyDetailsHelper(BaseNuGet manager) : base(manager)
1212
{ }
1313

1414
protected override IEnumerable<string> GetInstallableVersions_UnSafe(IPackage package)

src/UniGetUI.PackageEngine.Managers.Chocolatey/Providers/ChocolateyOperationProvider.cs renamed to src/UniGetUI.PackageEngine.Managers.Chocolatey/Helpers/ChocolateyPkgOperationHelper.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
using UniGetUI.PackageEngine.Interfaces;
55

66
namespace UniGetUI.PackageEngine.Managers.ChocolateyManager;
7-
internal sealed class ChocolateyOperationProvider : BaseOperationProvider<Chocolatey>
7+
internal sealed class ChocolateyPkgOperationHelper : PackagePkgOperationHelper
88
{
9-
public ChocolateyOperationProvider(Chocolatey manager) : base(manager) { }
9+
public ChocolateyPkgOperationHelper(Chocolatey manager) : base(manager) { }
1010

11-
public override IEnumerable<string> GetOperationParameters(
11+
protected override IEnumerable<string> _getOperationParameters(
1212
IPackage package,
1313
IInstallationOptions options,
1414
OperationType operation)
@@ -47,7 +47,7 @@ public override IEnumerable<string> GetOperationParameters(
4747
return parameters;
4848
}
4949

50-
public override OperationVeredict GetOperationResult(
50+
protected override OperationVeredict _getOperationResult(
5151
IPackage package,
5252
OperationType operation,
5353
IEnumerable<string> processOutput,

src/UniGetUI.PackageEngine.Managers.Chocolatey/Providers/ChocolateySourceProvider.cs renamed to src/UniGetUI.PackageEngine.Managers.Chocolatey/Helpers/ChocolateySourceHelper.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
namespace UniGetUI.PackageEngine.Managers.ChocolateyManager
1010
{
11-
internal sealed class ChocolateySourceProvider : BaseSourceProvider<PackageManager>
11+
internal sealed class ChocolateySourceHelper : BaseSourceHelper
1212
{
13-
public ChocolateySourceProvider(Chocolatey manager) : base(manager) { }
13+
public ChocolateySourceHelper(Chocolatey manager) : base(manager) { }
1414

1515
public override string[] GetAddSourceParameters(IManagerSource source)
1616
{

src/UniGetUI.PackageEngine.Managers.Dotnet/DotNet.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ public DotNet()
5959
KnownSources = [new ManagerSource(this, "nuget.org", new Uri("https://www.nuget.org/api/v2"))],
6060
};
6161

62-
PackageDetailsProvider = new DotNetDetailsProvider(this);
63-
OperationProvider = new DotNetOperationProvider(this);
62+
DetailsHelper = new DotNetDetailsHelper(this);
63+
OperationHelper = new DotNetPkgOperationHelper(this);
6464
}
6565

6666
protected override IEnumerable<Package> GetAvailableUpdates_UnSafe()

src/UniGetUI.PackageEngine.Managers.Dotnet/Providers/DotNetDetailsProvider.cs renamed to src/UniGetUI.PackageEngine.Managers.Dotnet/Helpers/DotNetDetailsHelper.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
namespace UniGetUI.PackageEngine.Managers.Chocolatey
55
{
6-
public class DotNetDetailsProvider : BaseNuGetDetailsProvider
6+
public class DotNetDetailsHelper : BaseNuGetDetailsHelper
77
{
8-
public DotNetDetailsProvider(BaseNuGet manager) : base(manager)
8+
public DotNetDetailsHelper(BaseNuGet manager) : base(manager)
99
{ }
1010

1111
protected override string? GetInstallLocation_UnSafe(IPackage package)

0 commit comments

Comments
 (0)