Skip to content

Commit 8d67068

Browse files
committed
Added dependency wizard
1 parent 402222b commit 8d67068

File tree

9 files changed

+207
-0
lines changed

9 files changed

+207
-0
lines changed

Packages/com.quickeye.http-debugger/DependencyMessage.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Packages/com.quickeye.http-debugger/DependencyMessage/Editor.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
using System;
2+
using System.Linq;
3+
using System.Text;
4+
using UnityEditor;
5+
using UnityEditorInternal;
6+
using UnityEngine;
7+
8+
namespace QuickEye.DependencyMessage.WebTools
9+
{
10+
[CreateAssetMenu]
11+
internal class DependencyMessage : ScriptableObject
12+
{
13+
[InitializeOnLoadMethod]
14+
private static void ShowMessage()
15+
{
16+
var messageData = LoadMessage();
17+
if (!messageData.ShouldShowMessage())
18+
return;
19+
var packageManifestJson = messageData.GetPackageManifestJson();
20+
var packageName = packageManifestJson?.displayName;
21+
var title = $"{packageName} has missing dependency";
22+
23+
var messageSb = new StringBuilder();
24+
messageSb.AppendLine($"{packageName} has been added to the project but it is missing its dependencies.");
25+
messageSb.AppendLine($"Add following packages:");
26+
27+
foreach (var gitDependency in messageData.dependencies)
28+
{
29+
messageSb.AppendLine($"- {gitDependency.name}");
30+
}
31+
32+
var result = EditorUtility.DisplayDialogComplex(title, messageSb.ToString(), "Install automatically",
33+
"Cancel",
34+
"Cancel, never show again");
35+
36+
switch (result)
37+
{
38+
case 0:
39+
AddPackages(messageData.dependencies);
40+
break;
41+
case 1:
42+
break;
43+
case 2:
44+
messageData.SetNeverShowFlag(true);
45+
break;
46+
}
47+
}
48+
49+
[SerializeField]
50+
private PackageManifest packageManifest;
51+
52+
public GitDependency[] dependencies;
53+
54+
private bool ShouldShowMessage()
55+
{
56+
if (!TryGetNeverShowPrefKey(out var key))
57+
return false;
58+
return !EditorPrefs.GetBool(key, false);
59+
}
60+
61+
private void SetNeverShowFlag(bool enabled)
62+
{
63+
if (!TryGetNeverShowPrefKey(out var key))
64+
return;
65+
EditorPrefs.SetBool(key, enabled);
66+
}
67+
68+
private bool TryGetNeverShowPrefKey(out string key)
69+
{
70+
if (packageManifest == null)
71+
{
72+
key = null;
73+
return false;
74+
}
75+
76+
var packageManifestGuid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(packageManifest));
77+
key = $"NeverShow-{packageManifestGuid}";
78+
return true;
79+
}
80+
81+
private static void AddPackages(GitDependency[] dependencies)
82+
{
83+
foreach (var gitDependency in dependencies)
84+
{
85+
UnityEditor.PackageManager.Client.Add(gitDependency.gitUrl);
86+
}
87+
}
88+
89+
private static DependencyMessage LoadMessage()
90+
{
91+
var messages = Resources.LoadAll<DependencyMessage>("");
92+
return messages.FirstOrDefault();
93+
}
94+
95+
private PackageManifestJson GetPackageManifestJson()
96+
{
97+
return packageManifest == null ? null : JsonUtility.FromJson<PackageManifestJson>(packageManifest.text);
98+
}
99+
}
100+
101+
[Serializable]
102+
internal class GitDependency
103+
{
104+
public string name;
105+
public string gitUrl;
106+
}
107+
108+
[Serializable]
109+
internal class PackageManifestJson
110+
{
111+
public string name;
112+
public string displayName;
113+
}
114+
}

Packages/com.quickeye.http-debugger/DependencyMessage/Editor/DependencyMessage.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "QuickEye.DependencyMessage.WebTools",
3+
"rootNamespace": "",
4+
"references": [],
5+
"includePlatforms": [
6+
"Editor"
7+
],
8+
"excludePlatforms": [],
9+
"allowUnsafeCode": false,
10+
"overrideReferences": false,
11+
"precompiledReferences": [],
12+
"autoReferenced": true,
13+
"defineConstraints": [
14+
"!DEP"
15+
],
16+
"versionDefines": [
17+
{
18+
"name": "com.quickeye.ui-toolkit-plus",
19+
"expression": "",
20+
"define": "DEP"
21+
}
22+
],
23+
"noEngineReferences": false
24+
}

Packages/com.quickeye.http-debugger/DependencyMessage/Editor/QuickEye.DependencyMessage.WebTools.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Packages/com.quickeye.http-debugger/DependencyMessage/Editor/Resources.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!114 &11400000
4+
MonoBehaviour:
5+
m_ObjectHideFlags: 0
6+
m_CorrespondingSourceObject: {fileID: 0}
7+
m_PrefabInstance: {fileID: 0}
8+
m_PrefabAsset: {fileID: 0}
9+
m_GameObject: {fileID: 0}
10+
m_Enabled: 1
11+
m_EditorHideFlags: 0
12+
m_Script: {fileID: 11500000, guid: c8bc7e2d2b35d4c40b4fb8f33b6ab9d1, type: 3}
13+
m_Name: Web Tools Dependency Message
14+
m_EditorClassIdentifier:
15+
packageManifest: {fileID: 8385607101436470782, guid: b26f2757e1c009b4aa93082d500d86ab,
16+
type: 3}
17+
dependencies:
18+
- name: UI Toolkit Plus
19+
gitUrl: https://github.com/ErnSur/UI-Toolkit-Plus.git

Packages/com.quickeye.http-debugger/DependencyMessage/Editor/Resources/Web Tools Dependency Message.asset.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)