diff --git a/PMF/src/Managers/LocalPackageManager.cs b/PMF/src/Managers/LocalPackageManager.cs index 98fd99c..7cc47b4 100644 --- a/PMF/src/Managers/LocalPackageManager.cs +++ b/PMF/src/Managers/LocalPackageManager.cs @@ -20,16 +20,8 @@ namespace PMF.Managers public static void Start() { validateManifestFile(); - - try - { - var json = File.ReadAllText(Config.ManifestFileName); - PackageManager.PackageList = JsonConvert.DeserializeObject>(json); - } - catch (FileNotFoundException) - { - // Something failed with validateManifestFile() - } + var json = File.ReadAllText(Config.ManifestFileName); + PackageManager.PackageList = JsonConvert.DeserializeObject>(json); } /// @@ -41,16 +33,8 @@ namespace PMF.Managers validateManifestFile(); var json = JsonConvert.SerializeObject(PackageManager.PackageList); - - try - { - File.WriteAllText(Config.ManifestFileName, json); - Directory.Delete(Config.TemporaryFolder, true); - } - catch (IOException) - { - // Something failed with validateManifestFile() - } + File.WriteAllText(Config.ManifestFileName, json); + Directory.Delete(Config.TemporaryFolder, true); } public static void validateManifestFile() diff --git a/PMF/src/Managers/PackageManager.cs b/PMF/src/Managers/PackageManager.cs index 7557b0c..e4b97ad 100644 --- a/PMF/src/Managers/PackageManager.cs +++ b/PMF/src/Managers/PackageManager.cs @@ -5,6 +5,10 @@ using System.Text; namespace PMF.Managers { + /// + /// Global Package manager for PMF + /// Combines RemotePackageManager and LocalPackageManager + /// public static class PackageManager { public static List PackageList { get; internal set; } @@ -16,8 +20,20 @@ namespace PMF.Managers /// public static void Start() { - LocalPackageManager.Start(); - initialized = true; + try + { + if (!initialized) + { + LocalPackageManager.Start(); + initialized = true; + Console.WriteLine("PMF intialized succesfully"); + } + } + catch (Exception ex) + { + Console.Error.WriteLine($"PMF failed to initialize. \n${ex.InnerException.Message}\nClosing."); + Environment.Exit(0); + } } /// @@ -25,12 +41,21 @@ namespace PMF.Managers /// public static void Stop() { - LocalPackageManager.Stop(); + try + { + if (initialized) + LocalPackageManager.Stop(); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Something failed while cleaning up PMF - \n{ex.InnerException.Message}"); + } } private static void notInitialized() { - Console.WriteLine("You must initialize PMF first before using it"); + Console.WriteLine("You must initialize PMF first before using it.\nClosing"); + Environment.Exit(0); } /// @@ -42,10 +67,7 @@ namespace PMF.Managers 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); @@ -64,15 +86,11 @@ 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)) { - // get package info for version Package remotePackage = RemotePackageManager.GetPackageInfo(id); if (remotePackage == null) @@ -103,10 +121,7 @@ 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)) @@ -142,10 +157,7 @@ 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)) @@ -173,10 +185,7 @@ namespace PMF.Managers public static bool Uninstall(string id) { if (!initialized) - { notInitialized(); - return false; - } return LocalPackageManager.RemovePackage(id); } @@ -192,10 +201,7 @@ 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)) @@ -227,10 +233,7 @@ 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)) @@ -264,10 +267,7 @@ 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/PackageState.cs b/PMF/src/Managers/PackageState.cs index a8737f6..0d3a6da 100644 --- a/PMF/src/Managers/PackageState.cs +++ b/PMF/src/Managers/PackageState.cs @@ -16,6 +16,7 @@ namespace PMF NotExisting, VersionNotFound, + // Common Failed } } diff --git a/PMF/src/Managers/RemotePackageManager.cs b/PMF/src/Managers/RemotePackageManager.cs index f5ef84b..f948417 100644 --- a/PMF/src/Managers/RemotePackageManager.cs +++ b/PMF/src/Managers/RemotePackageManager.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using PMF.Exceptions; using System; using System.Collections.Generic; using System.IO; @@ -42,7 +43,6 @@ namespace PMF.Managers using (WebClient client = new WebClient()) { var zipPath = Path.Combine(Config.TemporaryFolder, id); - Directory.CreateDirectory(zipPath); client.DownloadFile(asset.Url, Path.Combine(zipPath, asset.FileName)); foreach (var dependency in asset.Dependencies) client.DownloadFile(dependency.Url, Path.Combine(zipPath, dependency.FileName)); @@ -60,9 +60,8 @@ namespace PMF.Managers if (package == null) throw new ArgumentNullException(); - // Maybe throw a different exception here if (package.Assets.Count == 0) - throw new ArgumentNullException("asset count"); + return null; Asset ret_asset = null; foreach (var asset in package.Assets) @@ -84,7 +83,7 @@ namespace PMF.Managers if (package == null) throw new ArgumentNullException(); if (package.Assets.Count == 0) - throw new ArgumentNullException("asset count"); + return null; Asset ret_asset = null; foreach (var asset in package.Assets) diff --git a/PMF/src/Package/Asset.cs b/PMF/src/Package/Asset.cs index fb3fa7b..8f5ccea 100644 --- a/PMF/src/Package/Asset.cs +++ b/PMF/src/Package/Asset.cs @@ -7,6 +7,9 @@ using System.Text; namespace PMF { + /// + /// Asset version of a Package + /// public class Asset { ///