From 421252d1381dd70b96ccc094f07088b2edafac7e Mon Sep 17 00:00:00 2001 From: The Doctor Date: Thu, 18 Jun 2020 11:29:21 +0100 Subject: [PATCH] Update CurrentSdkVersion is null by default now Adjusted README LocalPackageManager and RemotePackageManager are internal classes now Added checks for initialization in PackageManager --- PMF.Tests/PMF.Tests.csproj | 6 +- PMF.Tests/UnitTest1.cs | 5 ++ PMF/src/Config.cs | 2 +- PMF/src/Managers/LocalPackageManager.cs | 4 +- PMF/src/Managers/PackageManager.cs | 74 +++++++++++++++++++++++- PMF/src/Managers/RemotePackageManager.cs | 2 +- README.md | 14 ++--- 7 files changed, 94 insertions(+), 13 deletions(-) diff --git a/PMF.Tests/PMF.Tests.csproj b/PMF.Tests/PMF.Tests.csproj index 2f562b5..bce2d21 100644 --- a/PMF.Tests/PMF.Tests.csproj +++ b/PMF.Tests/PMF.Tests.csproj @@ -1,7 +1,7 @@ - netcoreapp2.0 + netcoreapp3.1 false @@ -13,4 +13,8 @@ + + + + diff --git a/PMF.Tests/UnitTest1.cs b/PMF.Tests/UnitTest1.cs index 5344159..a3422a2 100644 --- a/PMF.Tests/UnitTest1.cs +++ b/PMF.Tests/UnitTest1.cs @@ -1,3 +1,4 @@ +using PMF.Managers; using System; using Xunit; @@ -8,7 +9,11 @@ namespace PMF.Tests [Fact] public void Test1() { + PackageManager.Start(); + // Do stuff + + PackageManager.Stop(); } } } diff --git a/PMF/src/Config.cs b/PMF/src/Config.cs index 31113a1..9d2dca7 100644 --- a/PMF/src/Config.cs +++ b/PMF/src/Config.cs @@ -25,7 +25,7 @@ namespace PMF /// /// The current SDK version /// - public static string CurrentSdkVersion { get; set; } + public static string CurrentSdkVersion { get; set; } = null; /// /// Internal flag to spit out debug info diff --git a/PMF/src/Managers/LocalPackageManager.cs b/PMF/src/Managers/LocalPackageManager.cs index 745ec45..e54d3b3 100644 --- a/PMF/src/Managers/LocalPackageManager.cs +++ b/PMF/src/Managers/LocalPackageManager.cs @@ -11,7 +11,7 @@ namespace PMF.Managers /// /// Manages all the local files /// - public static class LocalPackageManager + internal static class LocalPackageManager { public static List PackageList { get; private set; } @@ -55,7 +55,7 @@ namespace PMF.Managers } } - internal static void validateManifestFile() + public static void validateManifestFile() { if (!File.Exists(Config.ManifestFileName)) File.Create(Config.ManifestFileName).Close(); diff --git a/PMF/src/Managers/PackageManager.cs b/PMF/src/Managers/PackageManager.cs index f4ecbc1..9b5cf65 100644 --- a/PMF/src/Managers/PackageManager.cs +++ b/PMF/src/Managers/PackageManager.cs @@ -7,6 +7,30 @@ namespace PMF.Managers { public static class PackageManager { + private static bool initialized = false; + + /// + /// Initializes the package manager. Required + /// + public static void Start() + { + LocalPackageManager.Start(); + initialized = true; + } + + /// + /// Cleans up package manager. Required + /// + public static void Stop() + { + LocalPackageManager.Stop(); + } + + private static void notInitialized() + { + Console.WriteLine("You must initialize PMF first before using it"); + } + /// /// Installs a package given a version /// @@ -15,6 +39,12 @@ namespace PMF.Managers /// true Installation successful, false already installed public static PackageState InstallPackage(Package package, Asset asset) { + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + string zipFile = RemotePackageManager.DownloadAsset(package.ID, asset); LocalPackageManager.InstallPackage(package, asset, zipFile); return PackageState.Installed; @@ -31,6 +61,12 @@ namespace PMF.Managers { package = null; + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + // check if is already installed if (!LocalPackageManager.IsPackageInstalled(id, out Package localPackage, out string packageDirectory)) { @@ -39,7 +75,7 @@ namespace PMF.Managers if (remotePackage == null) return PackageState.NotExisting; - + Asset asset = remotePackage.GetAssetVersion(version); if (asset == null) @@ -64,6 +100,12 @@ namespace PMF.Managers { package = null; + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + // check if is already installed if (!LocalPackageManager.IsPackageInstalled(id, out Package localPackage, out string packageDirectory)) { @@ -97,6 +139,12 @@ namespace PMF.Managers { package = null; + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + // check if is already installed if (LocalPackageManager.IsPackageInstalled(id, out Package localPackage, out string packageDirectory)) return PackageState.AlreadyInstalled; @@ -122,6 +170,12 @@ namespace PMF.Managers /// True if success, false otherwise public static bool Uninstall(string id) { + if (!initialized) + { + notInitialized(); + return false; + } + return LocalPackageManager.RemovePackage(id); } @@ -135,6 +189,12 @@ namespace PMF.Managers { package = null; + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + // check if is already installed if (!LocalPackageManager.IsPackageInstalled(id, out Package localPackage, out string packageDirectory)) return PackageState.NotInstalled; @@ -164,6 +224,12 @@ namespace PMF.Managers { package = null; + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + // check if is already installed if (!LocalPackageManager.IsPackageInstalled(id, out Package localPackage, out string packageDirectory)) return PackageState.NotInstalled; @@ -195,6 +261,12 @@ namespace PMF.Managers { package = null; + if (!initialized) + { + notInitialized(); + return PackageState.Failed; + } + if (!LocalPackageManager.IsPackageInstalled(id, out Package localPackage, out string pd)) return PackageState.NotInstalled; diff --git a/PMF/src/Managers/RemotePackageManager.cs b/PMF/src/Managers/RemotePackageManager.cs index a32657d..f5ef84b 100644 --- a/PMF/src/Managers/RemotePackageManager.cs +++ b/PMF/src/Managers/RemotePackageManager.cs @@ -7,7 +7,7 @@ using System.Text; namespace PMF.Managers { - public static class RemotePackageManager + internal static class RemotePackageManager { /// /// Gets package info from the server along with ALL the assets in the json diff --git a/README.md b/README.md index 5171864..1356d16 100644 --- a/README.md +++ b/README.md @@ -31,11 +31,11 @@ PMF is a barebones C# library that provides basic support for package management These functions need to be called at the beggining of the program and at the end, respectively, they handle the manifest.json file that is saved with information regarding packages installed ```csharp -LocalPackageManager.Start(); +PackageManager.Start(); // Do stuff -LocalPackageManager.Stop(); +PackageManager.Stop(); ``` ### Install @@ -88,10 +88,10 @@ public static PackageState UpdateBySdkVersion(string id, out Package package, bo ### Configuration -Defines the manifest file name, by default is manifest.json +Defines the manifest file name ```csharp -string Config.ManifestFileName +string Config.ManifestFileName = "manifest.json"; ``` Defines the folder where packages are to be installed @@ -106,16 +106,16 @@ The http server where you will be sending information about the packages string Config.RepositoryEndpoint ``` -Current SDK version, if you are not using this just use null +Current SDK version ```csharp -Version Config.CurrentSdkVersion +Version Config.CurrentSdkVersion = null; ``` Temporary folder where zip files will be downloaded to, gets deleted at the end of execution ```csharp -string Config.TemporaryFolder +string Config.TemporaryFolder = ".pmf-temp"; ``` ## JSON