@@ -54,48 +54,53 @@ public void Run(bool firstRun)
54
54
{
55
55
Logger . Trace ( "Run - CurrentDirectory {0}" , NPath . CurrentDirectory ) ;
56
56
57
- isBusy = true ;
57
+ var initEnvironmentTask = new ActionTask < NPath > ( CancellationToken ,
58
+ ( _ , path ) => InitializeEnvironment ( path ) )
59
+ { Affinity = TaskAffinity . UI } ;
58
60
59
- var gitExecutablePath = SystemSettings . Get ( Constants . GitInstallPathKey ) ? . ToNPath ( ) ;
60
- if ( gitExecutablePath . HasValue && gitExecutablePath . Value . FileExists ( ) ) // we have a git path
61
- {
62
- Logger . Trace ( "Using git install path from settings: {0}" , gitExecutablePath ) ;
63
- InitializeEnvironment ( gitExecutablePath . Value ) ;
64
- }
65
- else // we need to go find git
66
- {
67
- Logger . Trace ( "No git path found in settings" ) ;
61
+ isBusy = true ;
68
62
69
- var initEnvironmentTask = new ActionTask < NPath > ( CancellationToken ,
70
- ( b , path ) => InitializeEnvironment ( path ) ) { Affinity = TaskAffinity . UI } ;
71
- var findExecTask = new FindExecTask ( "git" , CancellationToken )
72
- . FinallyInUI ( ( b , ex , path ) =>
63
+ var octorunInstaller = new OctorunInstaller ( Environment , TaskManager ) ;
64
+ var setupTask = octorunInstaller
65
+ . SetupOctorunIfNeeded ( )
66
+ . Then ( ( s , octorunPath ) =>
73
67
{
74
- if ( b && path . IsInitialized )
75
- {
76
- //Logger.Trace("FindExecTask Success: {0}", path);
77
- InitializeEnvironment ( path ) ;
78
- }
79
- else
80
- {
81
- //Logger.Warning("FindExecTask Failure");
82
- Logger . Error ( "Git not found" ) ;
83
- }
68
+ Environment . OctorunScriptPath = octorunPath ;
84
69
} ) ;
85
70
86
- var gitInstaller = new GitInstaller ( Environment , CancellationToken ) ;
71
+ var initializeGitTask = new FuncTask < NPath > ( CancellationToken , ( ) =>
72
+ {
73
+ var gitExecutablePath = SystemSettings . Get ( Constants . GitInstallPathKey ) ? . ToNPath ( ) ;
74
+ if ( gitExecutablePath . HasValue && gitExecutablePath . Value . FileExists ( ) ) // we have a git path
75
+ {
76
+ Logger . Trace ( "Using git install path from settings: {0}" , gitExecutablePath ) ;
77
+ return gitExecutablePath . Value ;
78
+ }
79
+ return NPath . Default ;
80
+ } ) ;
87
81
88
- // if successful, continue with environment initialization, otherwise try to find an existing git installation
89
- var setupTask = gitInstaller . SetupGitIfNeeded ( ) ;
90
- setupTask . Progress ( progressReporter . UpdateProgress ) ;
91
- setupTask . OnEnd += ( thisTask , result , success , exception ) =>
82
+ initializeGitTask . OnEnd += ( t , path , _ , __ ) =>
92
83
{
93
- if ( success && result . IsInitialized )
94
- thisTask . Then ( initEnvironmentTask ) ;
95
- else
96
- thisTask . Then ( findExecTask ) ;
84
+ if ( path . IsInitialized )
85
+ return ;
86
+
87
+ Logger . Trace ( "No git path found in settings" ) ;
88
+
89
+ var gitInstaller = new GitInstaller ( Environment , CancellationToken ) ;
90
+
91
+ // if successful, continue with environment initialization, otherwise try to find an existing git installation
92
+ var task = gitInstaller . SetupGitIfNeeded ( ) ;
93
+ task . Progress ( progressReporter . UpdateProgress ) ;
94
+ task . OnEnd += ( thisTask , result , success , exception ) =>
95
+ {
96
+ thisTask . Then ( initEnvironmentTask , taskIsTopOfChain : true ) ;
97
+ } ;
98
+
99
+ // append installer task to top chain
100
+ t . Then ( task , taskIsTopOfChain : true ) ;
97
101
} ;
98
- }
102
+
103
+ setupTask . Then ( initializeGitTask ) . Start ( ) ;
99
104
}
100
105
101
106
public ITask InitializeRepository ( )
@@ -195,13 +200,20 @@ protected void SetupMetrics(string unityVersion, bool firstRun)
195
200
/// <param name="octorunScriptPath"></param>
196
201
private void InitializeEnvironment ( NPath gitExecutablePath )
197
202
{
203
+ SetupMetrics ( ) ;
204
+
205
+ if ( ! gitExecutablePath . IsInitialized )
206
+ {
207
+ isBusy = false ;
208
+ return ;
209
+ }
210
+
198
211
Environment . GitExecutablePath = gitExecutablePath ;
199
212
Environment . User . Initialize ( GitClient ) ;
200
213
201
214
var afterGitSetup = new ActionTask ( CancellationToken , RestartRepository )
202
215
. ThenInUI ( InitializeUI ) ;
203
216
204
- SetupMetrics ( ) ;
205
217
ITask task = afterGitSetup ;
206
218
if ( Environment . IsWindows )
207
219
{
0 commit comments