提交 7cd126f6 编写于 作者: 魔术师Dix's avatar 魔术师Dix

【UpmGitTool】新增安装包的方法;

上级 9307e307
......@@ -149,5 +149,14 @@ namespace UpmGitTool
#endregion
#region 临时变量
/// <summary>
/// 当前选择的版本包;
/// </summary>
public static UpmPackageVersion SelectedPackageVersion;
#endregion
}
}
\ No newline at end of file
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.TextCore.Text;
using System.Security.Cryptography;
namespace UpmGitTool
{
......@@ -10,24 +9,127 @@ namespace UpmGitTool
/// </summary>
public static class CoreFunction
{
#region 包操作
public static void Init()
/// <summary>
/// 安装或者升级包
/// </summary>
public static void InstallVersion(this UpmPackageVersion version)
{
var name = version.Name;
var gitPath = version.GitUrl;
AppState.unityManifes?.InstallVersion(name,gitPath);
}
public static void InstallVersion(this DependencyInfo depency)
{
string key = depency.name;
SemVersion depVer = SemVersion.Parse(depency.version);
var pkg = AppState.FindPackage(key);
var pkgVersion = pkg.Versions;
for (int i = 0; i < pkgVersion.Count; i++)
{
var tVersion = pkgVersion[i];
if (tVersion.Version >= depVer)
{
InstallVersion(tVersion);
return;
}
}
//没有目标版本,只有安装最新版本;
InstallVersion(pkgVersion[0]);
}
#region
/// <summary>
/// 查找某个版本所需要的依赖包;
/// </summary>
/// <param name="version"></param>
public static List<DependencyInfo> FindDepencis(this UpmPackageVersion version)
{
List<DependencyInfo> L = new List<DependencyInfo>();
var depency = version.Dependencies;
foreach (var dep in depency)
{
//判定已安装版本是否有满足要求的;
string key = dep.name;
var pkg = AppState.FindPackage(key);
if (pkg != null)
{
if (pkg.IsInstalled)
{
var installVer = pkg.InstallVersionString;
var depVer = dep.version;
if (IsCurrentVersionNewer(installVer, depVer))//已安装了更新的版本;
continue;
}
}
//此时添加此版本;
L.Add(dep);
}
return L;
}
private static void InitMainWindowMsg()
/// <summary>
/// 当前是否已经安装了更新版本;
/// </summary>
/// <param name="dep"></param>
public static bool IsInstalledNewer(this DependencyInfo dep)
{
GYEventsCenter.RegisterEventMsg(Lib.KEY_MENUITEM_OPEN_POJECT, OnClickOpenProject);
//判定已安装版本是否有满足要求的包;
if (!dep.IsExistPackage()) return false;//未知包
string key = dep.name;
var pkg = AppState.FindPackage(key);
if (!pkg.IsInstalled) return false;//未安装
var installVer = pkg.InstallVersionString;
var depVer = dep.version;
if (IsCurrentVersionNewer(installVer, depVer))//已安装了更新的版本;
return true;
return false;
}
/// <summary>
/// 是否是已知包;
/// </summary>
/// <param name="dep"></param>
/// <returns></returns>
public static bool IsExistPackage(this DependencyInfo dep)
{
string key = dep.name;
var pkg = AppState.FindPackage(key);
return pkg != null;
}
/// <summary>
/// 判定当前的版本是不是更新的版本
/// </summary>
/// <param name="curVer">当前版本</param>
/// <param name="targetVer">目标版本</param>
public static bool IsCurrentVersionNewer(string curVer, string targetVer)
{
var cV= SemVersion.Parse(curVer);
var tV = SemVersion.Parse(targetVer);
return cV >= tV;
}
private static void OnClickOpenProject(string msgId, object data)
/// <summary>
/// 卸载包
/// </summary>
public static void UnInstallVersion(UpmPackageVersion version)
{
var name = version.Name;
AppState.unityManifes.UninstallVersion(name);
}
public static UpmPackageVersion GetDefaultShowVersion(this UPackage pkg)
{
if (pkg.InstallVersion != null) return pkg.InstallVersion;
if (pkg.Versions.Count == 0) return null;
return pkg.Versions[0];
}
#endregion
......
......@@ -22,7 +22,7 @@ namespace UpmGitTool
[LabelText("Unity内置包")]
UnityBuildIn,
[LabelText("未知包")]
[LabelText("未知包")]//这个是连Git地址都不知道的包;
Unknown,
[LabelText("拉取中")]
......@@ -37,5 +37,8 @@ namespace UpmGitTool
[LabelText("已最新")]//已安装
Checked,
[LabelText("未拉取")]//知道Git地址,但没有拉取
UnFitched,
}
}
\ No newline at end of file
......@@ -39,5 +39,21 @@ namespace UpmGitTool
}
}
public void InstallVersion(string name, string version)
{
if (dependencies == null) return;
dependencies[name] = version;
OnSerialized();
Logger.Log($"安装版本:{name} : {version}");
}
public void UninstallVersion(string name)
{
dependencies?.Remove(name);
OnSerialized();
}
}
}
\ No newline at end of file
......@@ -44,6 +44,8 @@ namespace UpmGitTool.UI
public void InitData(UpmPackageVersion version)
{
AppState.SelectedPackageVersion = version;
if (version == null)
{
UsingObj.SetActive(false);
......
......@@ -93,18 +93,11 @@ namespace UpmGitTool.UI
L.Add(version);
VersionContent.UpdateList(L);
//找到默认显示的版本;
var defVersion = GetDefaultShowVersion(Package);
var defVersion = Package.GetDefaultShowVersion();
VersionContent.SetSelectData(defVersion);
InitVersion(defVersion);
}
private UpmPackageVersion GetDefaultShowVersion(UPackage pkg)
{
if (pkg.InstallVersion != null) return pkg.InstallVersion;
if (pkg.Versions.Count == 0) return null;
return pkg.Versions[0];
}
public void InitVersion(UpmPackageVersion v)
{
CurrentVersion = v;
......@@ -138,7 +131,7 @@ namespace UpmGitTool.UI
private void InstallVersion()
{
UIManager.Instance?.OpenWindow(E_WindowType.InstallWindow);
}
private void UnInstallVersion()
......
......@@ -22,6 +22,7 @@ namespace UpmGitTool.UI
[LabelText("主窗口")]
MainWindow,
[LabelText("安装面板")]
InstallWindow,
}
}
\ No newline at end of file
......@@ -110,8 +110,11 @@ namespace UpmGitTool.UI
GitFetchView.gameObject.SetActive(false);
DetailViewObj.SetActive(true);
var defVersion = package.GetDefaultShowVersion();
AppState.SelectedPackageVersion = defVersion;
descripeContent.InitData(package);
depencyContent.InitData(package.InstallVersion);
depencyContent.InitData(defVersion);
}
#region 左侧的浏览进度条
......
......@@ -18,15 +18,14 @@ namespace UpmGitTool.UI
public class UIManager : SerializedMonoBehaviour
{
[LabelText("所有UI面板(非预制)")]
public Dictionary<E_WindowType, UIWindow> DictAllWindow = new Dictionary<E_WindowType, UIWindow>();
public static UIManager Instance { get; private set; }
private void Awake() { Instance = this; }
private void Start()
{
OpenWindow(E_WindowType.MainWindow);
}
[LabelText("所有UI面板(非预制)")]
public Dictionary<E_WindowType, UIWindow> DictAllWindow = new Dictionary<E_WindowType, UIWindow>();
private void Start() { OpenWindow(E_WindowType.MainWindow); }
public void OpenWindow(E_WindowType type)
{
......
......@@ -97,7 +97,7 @@
if (pkg == null) return E_PackageState.None;
if (!pkg.IsGit) return E_PackageState.UnityBuildIn;
if (pkg.IsFetching) return E_PackageState.Fetching;
if (!pkg.IsFetched()) return E_PackageState.Unknown;
if (!pkg.IsFetched()) return E_PackageState.UnFitched;
if (!pkg.IsInstalled) return E_PackageState.UnInstall;
if (pkg.IsUpgradable) return E_PackageState.Upgrade;
return E_PackageState.Checked;
......@@ -120,7 +120,7 @@
if (pkg == null) return E_PackageState.Unknown;
if (!pkg.IsGit) return E_PackageState.UnityBuildIn;
if (pkg.IsFetching) return E_PackageState.Fetching;
if (!pkg.IsFetched()) return E_PackageState.Unknown;
if (!pkg.IsFetched()) return E_PackageState.UnFitched;
if (!pkg.IsInstalled) return E_PackageState.UnInstall;
if (pkg.InstallVersion.Version.ToString() == depency.version) return E_PackageState.Checked;
return E_PackageState.UnInstall;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册