@@ -54,48 +54,53 @@ public void Run(bool firstRun)
5454 {
5555 Logger . Trace ( "Run - CurrentDirectory {0}" , NPath . CurrentDirectory ) ;
5656
57- isBusy = true ;
57+ var initEnvironmentTask = new ActionTask < NPath > ( CancellationToken ,
58+ ( _ , path ) => InitializeEnvironment ( path ) )
59+ { Affinity = TaskAffinity . UI } ;
5860
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 ;
6862
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 ) =>
7367 {
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 ;
8469 } ) ;
8570
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+ } ) ;
8781
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 , _ , __ ) =>
9283 {
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 ) ;
97101 } ;
98- }
102+
103+ setupTask . Then ( initializeGitTask ) . Start ( ) ;
99104 }
100105
101106 public ITask InitializeRepository ( )
@@ -195,13 +200,20 @@ protected void SetupMetrics(string unityVersion, bool firstRun)
195200 /// <param name="octorunScriptPath"></param>
196201 private void InitializeEnvironment ( NPath gitExecutablePath )
197202 {
203+ SetupMetrics ( ) ;
204+
205+ if ( ! gitExecutablePath . IsInitialized )
206+ {
207+ isBusy = false ;
208+ return ;
209+ }
210+
198211 Environment . GitExecutablePath = gitExecutablePath ;
199212 Environment . User . Initialize ( GitClient ) ;
200213
201214 var afterGitSetup = new ActionTask ( CancellationToken , RestartRepository )
202215 . ThenInUI ( InitializeUI ) ;
203216
204- SetupMetrics ( ) ;
205217 ITask task = afterGitSetup ;
206218 if ( Environment . IsWindows )
207219 {
0 commit comments