@@ -14,8 +14,10 @@ abstract class ApplicationManagerBase : IApplicationManager
14
14
private RepositoryManager repositoryManager ;
15
15
private Progress progressReporter ;
16
16
protected bool isBusy ;
17
- protected bool firstRun ;
18
- protected Guid instanceId ;
17
+ private bool firstRun ;
18
+ protected bool FirstRun { get { return firstRun ; } set { firstRun = value ; } }
19
+ private Guid instanceId ;
20
+ protected Guid InstanceId { get { return instanceId ; } set { instanceId = value ; } }
19
21
20
22
public event Action < IProgress > OnProgress
21
23
{
@@ -49,17 +51,16 @@ public void Run()
49
51
{
50
52
isBusy = true ;
51
53
52
- var thread = new Thread ( obj =>
54
+ var thread = new Thread ( ( ) =>
53
55
{
54
56
GitInstallationState state = new GitInstallationState ( ) ;
55
- CancellationToken token = ( CancellationToken ) obj ;
56
57
try
57
58
{
58
- SetupMetrics ( Environment . UnityVersion , firstRun , instanceId ) ;
59
+ SetupMetrics ( Environment . UnityVersion , instanceId ) ;
59
60
60
61
if ( Environment . IsMac )
61
62
{
62
- var getEnvPath = new SimpleProcessTask ( token , "bash" . ToNPath ( ) , "-c \" /usr/libexec/path_helper\" " )
63
+ var getEnvPath = new SimpleProcessTask ( CancellationToken , "bash" . ToNPath ( ) , "-c \" /usr/libexec/path_helper\" " )
63
64
. Configure ( ProcessManager , dontSetupGit : true )
64
65
. Catch ( e => true ) ; // make sure this doesn't throw if the task fails
65
66
var path = getEnvPath . RunWithReturn ( true ) ;
@@ -70,32 +71,17 @@ public void Run()
70
71
}
71
72
}
72
73
74
+ var installer = new GitInstaller ( Environment , ProcessManager , CancellationToken , SystemSettings )
75
+ { Progress = progressReporter } ;
73
76
state = SystemSettings . Get < GitInstallationState > ( Constants . GitInstallationState ) ?? state ;
74
77
if ( state . GitIsValid && state . GitLfsIsValid )
75
78
{
76
79
if ( firstRun )
77
80
{
78
- // just check if the git/git lfs version is what we need
79
- var version = new GitVersionTask ( token )
80
- . Configure ( ProcessManager , state . GitExecutablePath , dontSetupGit : true )
81
- . Catch ( e =>
82
- {
83
- Logger . Error ( e , "Error getting git version" ) ;
84
- return true ;
85
- } )
86
- . RunWithReturn ( true ) ;
87
- state . GitIsValid = version >= Constants . MinimumGitVersion ;
81
+ installer . ValidateGitVersion ( state ) ;
88
82
if ( state . GitIsValid )
89
83
{
90
- version = new GitLfsVersionTask ( token )
91
- . Configure ( ProcessManager , state . GitLfsExecutablePath , dontSetupGit : true )
92
- . Catch ( e =>
93
- {
94
- Logger . Error ( e , "Error getting lfs version" ) ;
95
- return true ;
96
- } )
97
- . RunWithReturn ( true ) ;
98
- state . GitLfsIsValid = version >= Constants . MinimumGitLfsVersion ;
84
+ installer . ValidateGitLfsVersion ( state ) ;
99
85
}
100
86
}
101
87
}
@@ -105,9 +91,7 @@ public void Run()
105
91
106
92
if ( ! state . GitIsValid || ! state . GitLfsIsValid )
107
93
{
108
- state = new GitInstaller ( Environment , ProcessManager , CancellationToken , SystemSettings )
109
- { Progress = progressReporter }
110
- . SetupGitIfNeeded ( ) ;
94
+ state = installer . SetupGitIfNeeded ( ) ;
111
95
}
112
96
113
97
SetupGit ( state ) ;
@@ -123,7 +107,7 @@ public void Run()
123
107
Logger . Error ( ex , "A problem ocurred setting up Git" ) ;
124
108
}
125
109
126
- new ActionTask < bool > ( token , ( s , gitIsValid ) =>
110
+ new ActionTask < bool > ( CancellationToken , ( s , gitIsValid ) =>
127
111
{
128
112
InitializationComplete ( ) ;
129
113
if ( gitIsValid )
@@ -135,13 +119,31 @@ public void Run()
135
119
{ Affinity = TaskAffinity . UI }
136
120
. Start ( ) ;
137
121
} ) ;
138
- thread . Start ( CancellationToken ) ;
122
+ thread . Start ( ) ;
139
123
}
140
124
141
125
public void SetupGit ( GitInstaller . GitInstallationState state )
142
126
{
143
- if ( ! ( state . GitIsValid && state . GitLfsIsValid ) )
127
+ if ( ! state . GitIsValid || ! state . GitLfsIsValid )
128
+ {
129
+ if ( ! state . GitExecutablePath . IsInitialized )
130
+ {
131
+ Logger . Warning ( Localization . GitNotFound ) ;
132
+ }
133
+ else if ( ! state . GitLfsExecutablePath . IsInitialized )
134
+ {
135
+ Logger . Warning ( Localization . GitLFSNotFound ) ;
136
+ }
137
+ else if ( state . GitVersion < Constants . MinimumGitVersion )
138
+ {
139
+ Logger . Warning ( String . Format ( Localization . GitVersionTooLow , state . GitExecutablePath , state . GitVersion , Constants . MinimumGitVersion ) ) ;
140
+ }
141
+ else if ( state . GitLfsVersion < Constants . MinimumGitLfsVersion )
142
+ {
143
+ Logger . Warning ( String . Format ( Localization . GitLfsVersionTooLow , state . GitLfsExecutablePath , state . GitLfsVersion , Constants . MinimumGitLfsVersion ) ) ;
144
+ }
144
145
return ;
146
+ }
145
147
146
148
Environment . GitInstallPath = state . GitInstallationPath ;
147
149
Environment . GitExecutablePath = state . GitExecutablePath ;
@@ -208,10 +210,9 @@ public void SetupGit(GitInstaller.GitInstallationState state)
208
210
public void InitializeRepository ( )
209
211
{
210
212
isBusy = true ;
211
- var thread = new Thread ( obj =>
213
+ var thread = new Thread ( ( ) =>
212
214
{
213
215
var success = true ;
214
- CancellationToken token = ( CancellationToken ) obj ;
215
216
try
216
217
{
217
218
var targetPath = NPath . CurrentDirectory ;
@@ -245,7 +246,7 @@ public void InitializeRepository()
245
246
}
246
247
isBusy = false ;
247
248
} ) ;
248
- thread . Start ( CancellationToken ) ;
249
+ thread . Start ( ) ;
249
250
}
250
251
251
252
public void RestartRepository ( )
@@ -263,7 +264,7 @@ public void RestartRepository()
263
264
Logger . Trace ( $ "Got a repository? { ( Environment . Repository != null ? Environment . Repository . LocalPath : "null" ) } ") ;
264
265
}
265
266
266
- protected void SetupMetrics ( string unityVersion , bool firstRun , Guid instanceId )
267
+ protected void SetupMetrics ( string unityVersion , Guid instanceId )
267
268
{
268
269
string userId = null ;
269
270
if ( UserSettings . Exists ( Constants . GuidKey ) )
0 commit comments