Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 13efe75

Browse files
Adding error messages
1 parent 75e8bac commit 13efe75

File tree

1 file changed

+64
-17
lines changed

1 file changed

+64
-17
lines changed

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/GitPathView.cs

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Linq;
5+
using System.Text;
56
using System.Threading.Tasks;
67
using UnityEditor;
78
using UnityEngine;
@@ -11,35 +12,34 @@ namespace GitHub.Unity
1112
[Serializable]
1213
class GitPathView : Subview
1314
{
14-
private const string BrowseButton = "...";
1515
private const string GitInstallTitle = "Git installation";
16-
private const string GitInstallBrowseTitle = "Select git binary";
17-
private const string GitInstallPickInvalidTitle = "Invalid Git install";
18-
private const string GitInstallPickInvalidMessage = "The selected file is not a valid Git install. {0}";
19-
private const string GitInstallFindButton = "Find install";
20-
private const string GitInstallPickInvalidOK = "OK";
2116
private const string PathToGit = "Path to Git";
2217
private const string GitPathSaveButton = "Save Path";
18+
private const string GitInstallFindButton = "Find install";
19+
private const string BrowseButton = "...";
20+
private const string GitInstallBrowseTitle = "Select git binary";
21+
private const string ErrorInvalidPathMessage = "Invalid Path.";
22+
private const string ErrorGettingSoftwareVersionMessage = "Error getting software versions.";
23+
private const string ErrorMinimumGitVersionMessageFormat = "Git version {0} found. Git version {1} is required.";
24+
private const string ErrorMinimumGitLfsVersionMessageFormat = "Git LFS version {0} found. Git LFS version {1} is required.";
2325

2426
[SerializeField] private string gitExec;
2527
[SerializeField] private string gitExecParent;
2628
[SerializeField] private string gitExecExtension;
2729
[SerializeField] private string newGitExec;
28-
[NonSerialized] private bool gitExecHasChanged;
2930

3031
[NonSerialized] private bool isBusy;
32+
[NonSerialized] private string gitFileErrorMessage;
33+
[NonSerialized] private string gitVersionErrorMessage;
34+
[NonSerialized] private bool gitExecHasChanged;
35+
3136
public override void OnEnable()
3237
{
3338
base.OnEnable();
3439

3540
gitExecHasChanged = true;
3641
}
3742

38-
public override void OnDisable()
39-
{
40-
base.OnDisable();
41-
}
42-
4343
public override void OnDataUpdate()
4444
{
4545
base.OnDataUpdate();
@@ -89,11 +89,16 @@ public override void OnGUI()
8989

9090
GUILayout.BeginHorizontal();
9191
{
92-
var needsSaving = !string.IsNullOrEmpty(newGitExec)
93-
&& newGitExec != gitExec
94-
&& newGitExec.ToNPath().FileExists();
92+
var isValueChanged = !string.IsNullOrEmpty(newGitExec)
93+
&& newGitExec != gitExec;
94+
95+
var isValueChangedAndFileExists = isValueChanged && newGitExec.ToNPath().FileExists();
9596

96-
EditorGUI.BeginDisabledGroup(!needsSaving);
97+
gitFileErrorMessage = isValueChanged && !isValueChangedAndFileExists
98+
? ErrorInvalidPathMessage
99+
: null;
100+
101+
EditorGUI.BeginDisabledGroup(!isValueChangedAndFileExists);
97102
{
98103
if (GUILayout.Button(GitPathSaveButton, GUILayout.ExpandWidth(false)))
99104
{
@@ -138,6 +143,24 @@ public override void OnGUI()
138143
}
139144
}
140145
GUILayout.EndHorizontal();
146+
147+
if (gitFileErrorMessage != null)
148+
{
149+
GUILayout.BeginHorizontal();
150+
{
151+
GUILayout.Label(gitFileErrorMessage, Styles.ErrorLabel);
152+
}
153+
GUILayout.EndHorizontal();
154+
}
155+
156+
if (gitVersionErrorMessage != null)
157+
{
158+
GUILayout.BeginHorizontal();
159+
{
160+
GUILayout.Label(gitVersionErrorMessage, Styles.ErrorLabel);
161+
}
162+
GUILayout.EndHorizontal();
163+
}
141164
}
142165
EditorGUI.EndDisabledGroup();
143166
}
@@ -146,11 +169,16 @@ private void ValidateAndSetGitInstallPath(string value)
146169
{
147170
Logger.Trace("Validating Git Path:{0}", value);
148171

172+
gitVersionErrorMessage = null;
173+
149174
GitClient.ValidateGitInstall(value).ThenInUI((sucess, result) => {
150175
if (!sucess)
151176
{
152-
Logger.Trace("Error getting software versions");
177+
Logger.Trace(ErrorGettingSoftwareVersionMessage);
178+
gitVersionErrorMessage = ErrorGettingSoftwareVersionMessage;
179+
153180
isBusy = false;
181+
154182
return;
155183
}
156184

@@ -162,6 +190,25 @@ private void ValidateAndSetGitInstallPath(string value)
162190
result.GitLfsVersionTask,
163191
Constants.MinimumGitLfsVersion);
164192

193+
var errorMessageStringBuilder = new StringBuilder();
194+
195+
if (result.GitVersionTask < Constants.MinimumGitVersion)
196+
{
197+
errorMessageStringBuilder.AppendFormat(ErrorMinimumGitVersionMessageFormat, result.GitVersionTask, Constants.MinimumGitVersion);
198+
}
199+
200+
if (result.GitLfsVersionTask < Constants.MinimumGitLfsVersion)
201+
{
202+
if(errorMessageStringBuilder.Length > 0)
203+
{
204+
errorMessageStringBuilder.Append(Environment.NewLine);
205+
}
206+
207+
errorMessageStringBuilder.AppendFormat(ErrorMinimumGitLfsVersionMessageFormat, result.GitLfsVersionTask, Constants.MinimumGitLfsVersion);
208+
}
209+
210+
gitVersionErrorMessage = errorMessageStringBuilder.ToString();
211+
165212
isBusy = false;
166213
return;
167214
}

0 commit comments

Comments
 (0)