diff --git a/PMF/src/Managers/LocalPackageManager.cs b/PMF/src/Managers/LocalPackageManager.cs
index 4e84aec..74dd4c1 100644
--- a/PMF/src/Managers/LocalPackageManager.cs
+++ b/PMF/src/Managers/LocalPackageManager.cs
@@ -108,8 +108,34 @@ namespace PMF.Managers
// Maybe a library folder and check if is installed
foreach (var dependency in asset.Dependencies)
{
- PMF.InvokePackageMessageEvent($"Extracting dependency with id: {dependency.ID}");
- ZipFile.ExtractToDirectory(Path.Combine(zipPath, dependency.FileName), Path.Combine(Config.PackageInstallationFolder, remotePackage.ID, "Dependencies", dependency.ID));
+ if (dependency.Type == DependencyType.Standalone)
+ {
+ PMF.InvokePackageMessageEvent($"Extracting dependency with id: {dependency.ID} of type standalone");
+ ZipFile.ExtractToDirectory(Path.Combine(zipPath, dependency.FileName), Path.Combine(Config.PackageInstallationFolder, remotePackage.ID, "Dependencies", dependency.ID));
+ }
+ else // DependencyType.Package
+ {
+ PMF.InvokePackageMessageEvent($"Downloading dependency with id: {dependency.ID} of type package");
+
+ var success = PackageManager.Install(dependency.ID, dependency.Version, out Package p);
+
+ if (success == PackageState.Installed)
+ {
+ PMF.InvokePackageMessageEvent($"Package dependency installed successfully");
+ }
+ else if (success == PackageState.VersionNotFound)
+ {
+ PMF.InvokePackageMessageEvent("Asset not found");
+ }
+ else if (success == PackageState.NotExisting)
+ {
+ PMF.InvokePackageMessageEvent("Package not found");
+ }
+ else
+ {
+ PMF.InvokePackageMessageEvent($"Something went wrong installing dependency with id: {dependency.ID}");
+ }
+ }
}
remotePackage.Assets.Clear();
diff --git a/PMF/src/Managers/PackageManager.cs b/PMF/src/Managers/PackageManager.cs
index 7810e80..b799937 100644
--- a/PMF/src/Managers/PackageManager.cs
+++ b/PMF/src/Managers/PackageManager.cs
@@ -82,7 +82,7 @@ namespace PMF.Managers
/// The id of the package
/// The version of the asset
/// The package that was installed
- /// true Installation successful, false already installed
+ /// Final package state of installation
public static PackageState Install(string id, Version version, out Package package)
{
package = null;
diff --git a/PMF/src/Package/Dependency.cs b/PMF/src/Package/Dependency.cs
index a5bc635..9a9b149 100644
--- a/PMF/src/Package/Dependency.cs
+++ b/PMF/src/Package/Dependency.cs
@@ -1,4 +1,6 @@
-namespace PMF
+using System;
+
+namespace PMF
{
///
/// Files that an asset depends on
@@ -15,6 +17,16 @@
///
public string Checksum { get; set; }
+ ///
+ /// Type of dependency
+ ///
+ public DependencyType Type { get; set; }
+
+ ///
+ /// Version of the dependency if type is Package
+ ///
+ public Version Version { get; set; }
+
///
/// The file name of the dependecy
///
diff --git a/PMF/src/Package/DependencyType.cs b/PMF/src/Package/DependencyType.cs
new file mode 100644
index 0000000..4cf5376
--- /dev/null
+++ b/PMF/src/Package/DependencyType.cs
@@ -0,0 +1,8 @@
+namespace PMF
+{
+ public enum DependencyType
+ {
+ Package,
+ Standalone
+ }
+}