Skip to content
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ The main goal of this project is to create an intuitive GUI for the most common
With this app, you can easily download, install, update, and uninstall any software published on the supported package managers — and much more!

![image](https://github.com/user-attachments/assets/7cb447ca-ee8b-4bce-8561-b9332fb0139a)

View more screenshots [here](#screenthots)

Check out the [Supported Package Managers Table](#supported-package-managers) for more details!

Expand Down
33 changes: 3 additions & 30 deletions src/UniGetUI.Core.LanguageEngine/LanguageData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using UniGetUI.Core.Data;
using UniGetUI.Core.Logging;
using UniGetUI.PackageEngine.Enums;
using Architecture = UniGetUI.PackageEngine.Enums.Architecture;

namespace UniGetUI.Core.Language
{
Expand Down Expand Up @@ -151,45 +152,17 @@ private static Person[] LoadLanguageTranslatorList()

public static class CommonTranslations
{
public static readonly Dictionary<Architecture, string> ArchNames = new()
{
{ Architecture.X64, "x64" },
{ Architecture.X86, "x86" },
{ Architecture.Arm64, "arm64" },
{ Architecture.Arm, "arm32" },
};

public static readonly Dictionary<string, Architecture> InvertedArchNames = new()
{
{ "x64", Architecture.X64 },
{ "x86", Architecture.X86 },
{ "arm64", Architecture.Arm64 },
{ "arm32", Architecture.Arm },
};

public static readonly Dictionary<PackageScope, string> ScopeNames = new()
public static readonly Dictionary<string, string> ScopeNames = new()
{
{ PackageScope.Global, "Machine | Global" },
{ PackageScope.Local, "User | Local" },
};

public static readonly Dictionary<string, PackageScope> InvertedScopeNames = new()
public static readonly Dictionary<string, string> InvertedScopeNames = new()
{
{ "Machine | Global", PackageScope.Global },
{ "User | Local", PackageScope.Local },
};

public static readonly Dictionary<PackageScope, string> ScopeNames_NonLang = new()
{
{ PackageScope.Global, "machine" },
{ PackageScope.Local, "user" },
};

public static readonly Dictionary<string, PackageScope> InvertedScopeNames_NonLang = new()
{
{ "machine", PackageScope.Global },
{ "user", PackageScope.Local },
};
}
}

4 changes: 4 additions & 0 deletions src/UniGetUI.Core.Tools/Tools.cs
Original file line number Diff line number Diff line change
Expand Up @@ -694,5 +694,9 @@ public static string GetCurrentLocale()
{
return LanguageEngine?.Locale ?? "Unset/Unknown";
}

private static readonly HashSet<char> illegalPathChars = Path.GetInvalidFileNameChars().ToHashSet();
public static string MakeValidFileName(string name)
=> string.Concat(name.Where(x => !illegalPathChars.Contains(x)));
}
}
42 changes: 0 additions & 42 deletions src/UniGetUI.PAckageEngine.Interfaces/IInstallationOptions.cs

This file was deleted.

2 changes: 1 addition & 1 deletion src/UniGetUI.PAckageEngine.Interfaces/IPackage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ public interface IPackage : INotifyPropertyChanged, IEquatable<IPackage>
/// <returns>False if the update is a major update or the update doesn't exist, true if it's a minor update</returns>
public bool IsUpdateMinor();

public SerializablePackage AsSerializable();
public Task<SerializablePackage> AsSerializableAsync();

public SerializableIncompatiblePackage AsSerializable_Incompatible();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Serializable;

namespace UniGetUI.PackageEngine.Interfaces.ManagerProviders
{
Expand All @@ -12,11 +13,9 @@ public interface IPackageOperationHelper
/// that the requested operation is performed over the given package, with its corresponding
/// installation options.
/// </summary>
public IReadOnlyList<string> GetParameters(
IPackage package,
IInstallationOptions options,
OperationType operation
);
public IReadOnlyList<string> GetParameters(IPackage package,
InstallOptions options,
OperationType operation);

/// <summary>
/// Returns the veredict of the given package operation, given the package, the operation type,
Expand Down
20 changes: 15 additions & 5 deletions src/UniGetUI.PackageEngine.Enums/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,22 @@ namespace UniGetUI.PackageEngine.Enums
/// <summary>
/// Represents the installation scope of a package
/// </summary>
public enum PackageScope
public static class PackageScope
{
Global = 1,
Machine = 1,
Local = 0,
User = 0,
public static HashSet<string> ValidValues = [Machine, User];
public const string Machine = "machine";
public const string Global = Machine;
public const string User = "user";
public const string Local = User;
}

public static class Architecture
{
public static HashSet<string> ValidValues = [x86, x64, arm32, arm64];
public const string x86 = "x86";
public const string x64 = "x64";
public const string arm32 = "arm32";
public const string arm64 = "arm64";
}

public enum DeserializedPackageStatus
Expand Down
2 changes: 1 addition & 1 deletion src/UniGetUI.PackageEngine.Enums/ManagerCapabilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public struct ManagerCapabilities
public bool CanDownloadInstaller = false;
public bool SupportsCustomVersions = false;
public bool SupportsCustomArchitectures = false;
public Architecture[] SupportedCustomArchitectures = [];
public string[] SupportedCustomArchitectures = [];
public bool SupportsCustomScopes = false;
public bool SupportsPreRelease = false;
public bool SupportsCustomLocations = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
namespace UniGetUI.PackageEngine.Structs;
public struct OverridenInstallationOptions
{
public PackageScope? Scope;
public string? Scope;
public bool? RunAsAdministrator;
public bool PowerShell_DoNotSetScopeParameter = false;
public bool? WinGet_SpecifyVersion = null;

public OverridenInstallationOptions(PackageScope? scope = null, bool? runAsAdministrator = null)
public OverridenInstallationOptions(string? scope = null, bool? runAsAdministrator = null)
{
Scope = scope;
RunAsAdministrator = runAsAdministrator;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Serializable;

namespace UniGetUI.PackageEngine.Managers.CargoManager;

internal sealed class CargoPkgOperationHelper(Cargo cargo) : BasePkgOperationHelper(cargo)
{
protected override IReadOnlyList<string> _getOperationParameters(IPackage package, IInstallationOptions options, OperationType operation)
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options, OperationType operation)
{
var version = options.Version == string.Empty ? package.VersionString : options.Version;
List<string> parameters = operation switch
Expand Down
3 changes: 2 additions & 1 deletion src/UniGetUI.PackageEngine.Managers.Chocolatey/Chocolatey.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
using UniGetUI.PackageEngine.Managers.Choco;
using UniGetUI.PackageEngine.Managers.PowerShellManager;
using UniGetUI.PackageEngine.PackageClasses;
using Architecture = UniGetUI.PackageEngine.Enums.Architecture;

namespace UniGetUI.PackageEngine.Managers.ChocolateyManager
{
Expand All @@ -31,7 +32,7 @@ public Chocolatey()
CanRunInteractively = true,
SupportsCustomVersions = true,
SupportsCustomArchitectures = true,
SupportedCustomArchitectures = [Architecture.X86],
SupportedCustomArchitectures = [Architecture.x86],
SupportsPreRelease = true,
SupportsCustomSources = true,
SupportsCustomPackageIcons = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
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.ChocolateyManager;
internal sealed class ChocolateyPkgOperationHelper : BasePkgOperationHelper
{
public ChocolateyPkgOperationHelper(Chocolatey manager) : base(manager) { }

protected override IReadOnlyList<string> _getOperationParameters(
IPackage package,
IInstallationOptions options,
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options,
OperationType operation)
{
List<string> parameters = [operation switch {
Expand All @@ -31,7 +32,7 @@ protected override IReadOnlyList<string> _getOperationParameters(
{
parameters.Add("--no-progress");

if (options.Architecture == Architecture.X86)
if (options.Architecture == Architecture.x86)
parameters.Add("--forcex86");

if (options.PreRelease)
Expand Down
3 changes: 2 additions & 1 deletion src/UniGetUI.PackageEngine.Managers.Dotnet/DotNet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using UniGetUI.PackageEngine.Managers.PowerShellManager;
using UniGetUI.PackageEngine.PackageClasses;
using UniGetUI.PackageEngine.Structs;
using Architecture = UniGetUI.PackageEngine.Enums.Architecture;

namespace UniGetUI.PackageEngine.Managers.DotNetManager
{
Expand All @@ -28,7 +29,7 @@ public DotNet()
CanDownloadInstaller = true,
SupportsCustomScopes = true,
SupportsCustomArchitectures = true,
SupportedCustomArchitectures = [Architecture.X86, Architecture.X64, Architecture.Arm64, Architecture.Arm],
SupportedCustomArchitectures = [Architecture.x86, Architecture.x64, Architecture.arm64, Architecture.arm32],
SupportsPreRelease = true,
SupportsCustomLocations = true,
SupportsCustomPackageIcons = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
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,
IInstallationOptions options,
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options,
OperationType operation)
{
List<string> parameters =
Expand Down Expand Up @@ -41,10 +42,10 @@ protected override IReadOnlyList<string> _getOperationParameters(
{
parameters.AddRange(options.Architecture switch
{
Architecture.X86 => ["--arch", "x86"],
Architecture.X64 => ["--arch", "x64"],
Architecture.Arm => ["--arch", "arm32"],
Architecture.Arm64 => ["--arch", "arm64"],
Architecture.x86 => ["--arch", "x86"],
Architecture.x64 => ["--arch", "x64"],
Architecture.arm32 => ["--arch", "arm32"],
Architecture.arm64 => ["--arch", "arm64"],
_ => []
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ protected sealed override IReadOnlyList<Package> FindPackages_UnSafe(string quer
sources = [ Properties.DefaultSource ];
}

bool canPrerelease = InstallationOptions.LoadForManager(this).PreRelease;
bool canPrerelease = InstallOptionsFactory.LoadForManager(this).PreRelease;

foreach(IManagerSource source in sources)
{
Expand Down Expand Up @@ -154,7 +154,7 @@ protected override IReadOnlyList<Package> GetAvailableUpdates_UnSafe()
if (!sourceMapping.ContainsKey(uri)) sourceMapping[uri] = new();
sourceMapping[uri].Add(package);
}
bool canPrerelease = InstallationOptions.LoadForManager(this).PreRelease;
bool canPrerelease = InstallOptionsFactory.LoadForManager(this).PreRelease;

foreach (var pair in sourceMapping)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Serializable;

namespace UniGetUI.PackageEngine.Managers.NpmManager;
internal sealed class NpmPkgOperationHelper : BasePkgOperationHelper
{
public NpmPkgOperationHelper(Npm manager) : base(manager) { }

protected override IReadOnlyList<string> _getOperationParameters(IPackage package, IInstallationOptions options, OperationType operation)
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options, OperationType operation)
{
List<string> parameters = operation switch {
OperationType.Install => [Manager.Properties.InstallVerb, $"{package.Id}@{(options.Version == string.Empty? package.VersionString: options.Version)}"],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Serializable;

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,
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options,
OperationType operation)
{
List<string> parameters = [operation switch {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
using UniGetUI.PackageEngine.Classes.Manager.BaseProviders;
using UniGetUI.PackageEngine.Enums;
using UniGetUI.PackageEngine.Interfaces;
using UniGetUI.PackageEngine.Serializable;

namespace UniGetUI.PackageEngine.Managers.PowerShellManager;
internal sealed class PowerShellPkgOperationHelper : BasePkgOperationHelper
{
public PowerShellPkgOperationHelper(PowerShell manager) : base(manager) { }

protected override IReadOnlyList<string> _getOperationParameters(IPackage package, IInstallationOptions options, OperationType operation)
protected override IReadOnlyList<string> _getOperationParameters(IPackage package,
InstallOptions options, OperationType operation)
{
List<string> parameters = [operation switch {
OperationType.Install => Manager.Properties.InstallVerb,
Expand Down
Loading
Loading