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

【UpmGitTool】更新数据下载、加载流程,修改包拉取信息数据结构;

上级 c3357670
......@@ -1790,7 +1790,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &323000333
RectTransform:
m_ObjectHideFlags: 0
......@@ -4718,8 +4718,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -343.46002, y: 371.79797}
m_SizeDelta: {x: 697.41, y: 58.53}
m_AnchoredPosition: {x: 14.8, y: 371.79797}
m_SizeDelta: {x: 1413.9, y: 58.53}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1133591458
MonoBehaviour:
......@@ -5933,8 +5933,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -343.46002, y: 313.268}
m_SizeDelta: {x: 697.41, y: 58.53}
m_AnchoredPosition: {x: 14.8, y: 313.268}
m_SizeDelta: {x: 1413.93, y: 58.53}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1459682536
MonoBehaviour:
......@@ -7053,7 +7053,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4a839617f8e47484fa51d3510610f9c2, type: 3}
m_Name:
m_EditorClassIdentifier:
TestProjectPath: E:/OnlineProject/Cocklebur/UpmGitTool
TestProjectPath: E:/Project/SeaWar/SeaWar_4/seawar/Project/Unity
NodeJsPath: Tools/nodejs/node.exe
FetchPackagePath: Tools/Commands/fetch-packages.js
WorkingDirectory: E:/GitFetchResult
......
......@@ -25,14 +25,14 @@ namespace UpmGitTool
public void Start()
{
AppState.Path_FetchJsCmd = FetchPackagePath;
AppState.Path_WorkingDirectory=WorkingDirectory;
AppState.Path_WorkingDirectory = WorkingDirectory;
AppState.Path_NodeJsExe = NodeJsPath;
GYEventsCenter.RegisterEventMsg(Lib.ON_ADD_GIT_FETCH_REQ, OnAddGitFetchReq);
}
[LabelText("测试工程")]
[FolderPath(AbsolutePath =true)]
[FolderPath(AbsolutePath = true)]
public string TestProjectPath;
[Button]
......@@ -64,7 +64,7 @@ namespace UpmGitTool
if (!pkg.IsGitUrl) return;
var url = pkg.GitPath;
var name = pkg.Name;
CoreFunction.StartFetchGitUrl(name, url);
CoreFunction.StartFetchGitUrl(url);
}
}
......@@ -73,19 +73,14 @@ namespace UpmGitTool
[Button]
public void ReadFetchResult()
{
string resultDir = $"{WorkingDirectory}/Results-2.0.0";
UPackage pkg = null;
string url = "https://e.coding.net/Cyf649669121/unitypackage/UnityPackage.git#GYGame_GYEcs";
string lastName = url.GetGitLastName();
Logger.LogError(lastName);
foreach (var file in Directory.GetFiles(resultDir, "*.json"))
{
//var path = Path.Combine(resultDir, file);
var text = File.ReadAllText(file, System.Text.Encoding.UTF8);
var result = JsonUtility.FromJson<FetchResult>(text);
pkg = AppState.SetFetchResult(result);
}
string resultDir = $"{WorkingDirectory}/Results-2.0.0";
if (pkg != null)
desContent.SelectPackage(pkg);
foreach (var file in Directory.GetFiles(resultDir, $"*{lastName}.json"))
Debug.LogError(file);
}
private void OnAddGitFetchReq(string msgId, object data)
......@@ -98,8 +93,10 @@ namespace UpmGitTool
private IEnumerator IE_HandleFetchReq(Queue<GitFetchReq> queue)
{
Logger.Log($"开始拉取信息:{queue}");
if (queue != null)
{
Logger.Log($"等待拉取数量:{queue.Count}");
while (queue.Count > 0)
{
var req = queue.Dequeue();
......
......@@ -75,23 +75,28 @@ namespace UpmGitTool
pkg.OnDataRefresh();
}
else
DictAllPackages.Add(item.PackageId, new UPackage(item));
DictAllPackages.Add(item.Name, new UPackage(item));
}
public static UPackage SetFetchResult(FetchResult fetchRet)
public static void SetFetchResult(FetchResult fetchRet)
{
if (fetchRet == null) return null;
if (fetchRet == null) return;
var versions = fetchRet.versions;
UPackage pkg;
var key = fetchRet.url;
if (!DictAllPackages.TryGetValue(key, out pkg))
foreach (var version in versions)
{
pkg = new UPackage(fetchRet);
DictAllPackages.Add(key, pkg);
return pkg;
var key = version.Name;
if (!DictAllPackages.TryGetValue(key, out pkg))
{
pkg = new UPackage(version);
DictAllPackages.Add(key, pkg);
}
else
pkg.UpdateData(version);
pkg.OnDataRefresh();
Logger.Log($"Add Version: {version.Name}| {version.PackageName} | {version.VersionString}");
}
pkg.UpdateData(fetchRet);
return pkg;
}
public static List<IListViewData> FindTargetPackage(E_PackageFliterType filterType)
......
......@@ -48,9 +48,9 @@ namespace UpmGitTool
}
}
public static void StartFetchGitUrl(string packageName, string gitUrl)
public static void StartFetchGitUrl( string gitUrl)
{
GitFetchReq req = new GitFetchReq(packageName.GetLastName(), gitUrl);
GitFetchReq req = new GitFetchReq( gitUrl);
QueueGitFetchReq.Enqueue(req);
GYEventsCenter.PostNotification(Lib.ON_ADD_GIT_FETCH_REQ, QueueGitFetchReq);
......
......@@ -24,6 +24,7 @@ namespace UpmGitTool
public UpmPackageVersion[] versions;
public string DisplayName { get; private set; }
public string Name { get; private set; }
public override int GetHashCode() { return hash; }
......@@ -40,6 +41,7 @@ namespace UpmGitTool
if (version == null) continue;
version.OnAfterDeserialize();
DisplayName = version.DisplayName;
Name = version.Name;
}
}
......
......@@ -20,10 +20,10 @@ namespace UpmGitTool
public class GitFetchReq
{
public GitFetchReq(string displayName, string girUrl)
public GitFetchReq(string girUrl)
{
GitUrl = girUrl;
DisplayName = displayName;
GitLastName = girUrl.GetGitLastName();
}
public bool IsRunning { get; private set; }
......@@ -36,7 +36,7 @@ namespace UpmGitTool
/// <summary>
/// 包名,没有com. 只有最后显示的名字
/// </summary>
public string DisplayName;
public string GitLastName;
private NativeProgram program;
......@@ -48,7 +48,7 @@ namespace UpmGitTool
var WorkingDirectory = AppState.Path_WorkingDirectory;
var NodeJsPath = AppState.Path_NodeJsExe;
Logger.Log($"Start Fetch {DisplayName} , Url : {GitUrl}");
Logger.Log($"Start Fetch {GitLastName} , Url : {GitUrl}");
yield return null;
......@@ -68,14 +68,15 @@ namespace UpmGitTool
yield break;
}
Logger.Log($"Git 拉取成功 : {GitLastName}");
//根据拉取到的信息反序列化拉取结果;
string resultDir = $"{WorkingDirectory}/Results-2.0.0";
foreach (var file in Directory.GetFiles(resultDir, $"*{DisplayName}.json"))
foreach (var file in Directory.GetFiles(resultDir, $"*{GitLastName}.json"))
{
Logger.Log($"已经读取到对应文件:{file}");
var text = File.ReadAllText(file, System.Text.Encoding.UTF8);
var result = JsonUtility.FromJson<FetchResult>(text);
AppState.SetFetchResult(result).OnDataRefresh();
AppState.SetFetchResult(result);
}
IsRunning = false;
......
......@@ -7,6 +7,7 @@
*版本: 1.0
*/
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UpmGitTool.UI;
......@@ -18,19 +19,16 @@ namespace UpmGitTool
/// </summary>
public class UPackage : IListViewData
{
public string Key { get; private set; }
public string PackageName { get; private set; }
public string DisplayName { get; private set; }
public string LastName { get; private set; }
public string GitLastName { get; private set; }
public bool IsGit { get; private set; }
public UPackage(PackageItem item)
{
Key = item.GitPath;
DisplayName = item.Name;
LastName = item.Name.GetLastName();
PackageName = item.Name;
GitLastName = item.PackageUrl.GetGitLastName();
UpdateData(item);
}
......@@ -44,18 +42,34 @@ namespace UpmGitTool
RefreshInstalledVersion();
}
public UPackage(FetchResult fetch)
public UPackage( UpmPackageVersion version)
{
Key = fetch.url;
DisplayName = fetch.DisplayName;
LastName = DisplayName.GetLastName();
UpdateData(fetch);
PackageName = version.PackageName;
GitLastName = version.GitUrl.GetGitLastName();
UpdateData(version);
}
public void UpdateData(FetchResult fetch)
public void UpdateData(UpmPackageVersion version)
{
if (version.PackageName != PackageName) return;
IsGit = true;//只有Git拉下来的才会有 FetchResult
Versions = fetch.versions;
int length = Versions.Count;
int i;
for (i = 0; i < length; i++)
{
var ver = Versions[i];
if (ver.VersionString == version.VersionString)
{
Versions[i] = ver;
break;
}
}
if (i >= length)
Versions.Add(version);
//排序
//查找当前安装的版本;
RefreshInstalledVersion();
}
......@@ -105,7 +119,7 @@ namespace UpmGitTool
/// </summary>
public string InstallPackageId { get; private set; }
public UpmPackageVersion[] Versions { get; private set; }
public List<UpmPackageVersion> Versions = new List<UpmPackageVersion>();
public bool IsFilter(E_PackageFliterType type)
{
......@@ -134,12 +148,11 @@ namespace UpmGitTool
//根据拉取到的信息反序列化拉取结果;
string resultDir = $"{WorkingDirectory}/Results-2.0.0";
foreach (var file in Directory.GetFiles(resultDir, $"*{LastName}.json"))
foreach (var file in Directory.GetFiles(resultDir, $"*{GitLastName}.json"))
{
var text = File.ReadAllText(file, System.Text.Encoding.UTF8);
var result = JsonUtility.FromJson<FetchResult>(text);
UpdateData(result);
OnDataRefresh();
AppState.SetFetchResult(result);
return true;
}
......
......@@ -34,6 +34,8 @@ namespace UpmGitTool
[SerializeField] private DependencyInfo[] m_Dependencies;
[SerializeField] private string m_DocumentationUrl;
[SerializeField] private string m_ChangelogUrl;
[SerializeField] private string m_Url;
[SerializeField] private string m_Revision;
public string RefName => refName;
public string Hash => hash;
......@@ -49,6 +51,8 @@ namespace UpmGitTool
public DependencyInfo[] Dependencies => m_Dependencies;
public string DocumentationUrl => m_DocumentationUrl;
public string ChangelogUrl => m_ChangelogUrl;
public string Url => m_Url;
public string Revision => m_Revision;
public string GitUrl { get; private set; }
public string PackageName { get; private set; }
......
......@@ -32,9 +32,9 @@ namespace UpmGitTool.UI
{
package = pkg;
if (!package.IsGit)
Label.SetText($"{pkg.DisplayName} 是Unity内置包,这里无法查看详细信息\n请到Unity工程中自行查看");
Label.SetText($"{pkg.PackageName} 是Unity内置包,这里无法查看详细信息\n请到Unity工程中自行查看");
else
Label.SetText($"{pkg.DisplayName} 尚未从Git上拉取到详细信息\n点击下面按钮进行拉取");
Label.SetText($"{pkg.PackageName} 尚未从Git上拉取到详细信息\n点击下面按钮进行拉取");
BtnFetch.gameObject.SetActive(package.IsGit);
gameObject.SetActive(true);
}
......@@ -44,7 +44,7 @@ namespace UpmGitTool.UI
private void StartFetch()
{
if (package != null && package.IsGit)
CoreFunction.StartFetchGitUrl(package.DisplayName, package.PackageUrl);
CoreFunction.StartFetchGitUrl(package.PackageUrl);
}
}
......
......@@ -36,7 +36,7 @@ namespace UpmGitTool.UI
public void SetData(IListViewData data)
{
Package = data as UPackage;
Label.SetText(Package.DisplayName);
Label.SetText(Package.PackageName);
InstallMark.SetActive(Package.IsInstalled);
}
......
......@@ -10,7 +10,6 @@
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace UpmGitTool.UI
{
......@@ -73,8 +72,8 @@ namespace UpmGitTool.UI
public void SelectPackage(UPackage package)
{
if (package == null) return;
LabelName.SetText(package.DisplayName);
Logger.Log($"设置显示:{package.PackageName}");
LabelName.SetText(package.PackageName);
LabelVersion.gameObject.SetActive(package.IsInstalled);
if (package.IsInstalled) LabelVersion.SetText(package.InstalledVersionString);
......@@ -86,7 +85,7 @@ namespace UpmGitTool.UI
return;
}
if (package.Versions == null )
if (package.Versions == null || package.Versions.Count == 0)
{
//先尝试从已知路径中获取对应信息;
if (!package.AutoInitLocal())
......@@ -110,7 +109,7 @@ namespace UpmGitTool.UI
public TMP_Dropdown DropDown_PackageType;
[LabelText("筛选条件")]
[DisplayAsString,HideInEditorMode]
[DisplayAsString, HideInEditorMode]
public E_PackageFliterType PackageFliterType;
[LabelText("包信息控件")]
......@@ -132,7 +131,7 @@ namespace UpmGitTool.UI
private void OnClickPackageItem(IListViewItem item)
{
//设置为选中;
SelectedPackage= item.GetData as UPackage;
SelectedPackage = item.GetData as UPackage;
PackageContent.SetSelectData(SelectedPackage);
SelectPackage(SelectedPackage);
}
......
......@@ -66,11 +66,14 @@
#region 通用方法
public static string GetLastName(this string name)
public static string GetGitLastName(this string url)
{
if (string.IsNullOrEmpty(name)) return null;
var strArr = name.Split('.');
return strArr[strArr.Length - 1];
if (string.IsNullOrEmpty(url)) return null;
//https://e.coding.net/Cyf649669121/unitypackage/UnityPackage.git#GYGame_GYEcs
var str1 = url.Split('#')[0];
var strArr = str1.Split("/");
var str2 = strArr[strArr.Length - 1];
return str2.Substring(0, str2.LastIndexOf('.')).ToLower();
}
#endregion
......
......@@ -100,37 +100,11 @@ const parseRef = text => {
m_Source: 5,
m_Dependencies,
m_HasRepository: true,
m_Repository: {
m_Type: "git",
m_Url: repositoryUrl,
m_Revision: refName,
m_Path: subDir,
},
packageInfo: {
m_PackageId: `${p.name}@${repositoryUrlWithPath}#${refName}`,
m_Name: p.name,
m_DisplayName: p.displayName,
m_Description: p.description,
m_Version: p.version,
m_Source: 5,
m_Dependencies,
m_Git: {
m_Hash: hash,
m_Revision: refName,
},
m_Author: {
m_Name: author,
},
m_HasRepository: true,
m_Repository: {
m_Type: "git",
m_Url: repositoryUrl,
m_Revision: refName,
m_Path: subDir,
},
m_DocumentationUrl: docUrl,
m_ChangelogUrl: changeUrl,
}
m_DocumentationUrl: docUrl,
m_ChangelogUrl: changeUrl,
m_Author: author,
m_Url: repositoryUrl,
m_Revision: refName,
};
} catch (e) {
return undefined;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册