@@ -52,82 +52,78 @@ protected void Initialize()
5252 public void Run ( bool firstRun )
5353 {
5454 Logger . Trace ( "Run - CurrentDirectory {0}" , NPath . CurrentDirectory ) ;
55+ isBusy = true ;
56+
57+ var endTask = new ActionTask < GitInstaller . GitInstallationState > ( CancellationToken ,
58+ ( _ , state ) => InitializeEnvironment ( state ) )
59+ { Affinity = TaskAffinity . UI } ;
5560
5661 ITask < string > setExistingEnvironmentPath ;
5762 if ( Environment . IsMac )
5863 {
5964 setExistingEnvironmentPath = new SimpleProcessTask ( CancellationToken , "bash" . ToNPath ( ) , "-c \" /usr/libexec/path_helper\" " )
6065 . Configure ( ProcessManager , dontSetupGit : true )
6166 . Catch ( e => true ) // make sure this doesn't throw if the task fails
62- . Then ( ( success , path ) => success ? path . Split ( new [ ] { "\" " } , StringSplitOptions . None ) [ 1 ] : null ) ;
67+ . Then ( ( success , path ) => success ? path ? . Split ( new [ ] { "\" " } , StringSplitOptions . None ) [ 1 ] : null ) ;
6368 }
6469 else
6570 {
6671 setExistingEnvironmentPath = new FuncTask < string > ( CancellationToken , ( ) => null ) ;
6772 }
6873
69- setExistingEnvironmentPath . OnEnd += ( t , path , success , ex ) => {
74+ setExistingEnvironmentPath . OnEnd += ( t , path , success , ex ) =>
75+ {
7076 if ( path != null )
7177 {
7278 Logger . Trace ( "Existing Environment Path Original:{0} Updated:{1}" , Environment . Path , path ) ;
7379 Environment . Path = path ;
7480 }
7581 } ;
7682
77- var initEnvironmentTask = new ActionTask < GitInstaller . GitInstallationState > ( CancellationToken ,
78- ( _ , state ) => InitializeEnvironment ( state ) )
79- { Affinity = TaskAffinity . UI } ;
80-
81- isBusy = true ;
83+ var setupOctorun = new OctorunInstaller ( Environment , TaskManager ) . SetupOctorunIfNeeded ( ) ;
84+ var setOctorunEnvironment = new ActionTask < NPath > ( CancellationToken ,
85+ ( s , octorunPath ) => Environment . OctorunScriptPath = octorunPath ) ;
8286
83- var octorunInstaller = new OctorunInstaller ( Environment , TaskManager ) ;
84- var setupTask = setExistingEnvironmentPath . Then ( octorunInstaller . SetupOctorunIfNeeded ( ) ) ;
85-
86- var initializeGitTask = new FuncTask < NPath > ( CancellationToken , ( ) =>
87- {
88- var gitExecutablePath = SystemSettings . Get ( Constants . GitInstallPathKey ) ? . ToNPath ( ) ;
89- if ( gitExecutablePath . HasValue && gitExecutablePath . Value . FileExists ( ) ) // we have a git path
90- {
91- Logger . Trace ( "Using git install path from settings: {0}" , gitExecutablePath ) ;
92- return gitExecutablePath . Value ;
93- }
94- return NPath . Default ;
95- } ) ;
96- var setOctorunEnvironmentTask = new ActionTask < NPath > ( CancellationToken , ( s , octorunPath ) =>
87+ var getGitFromSettings = new FuncTask < NPath > ( CancellationToken , ( ) =>
88+ {
89+ var gitExecutablePath = SystemSettings . Get ( Constants . GitInstallPathKey ) ? . ToNPath ( ) ;
90+ if ( gitExecutablePath . HasValue && gitExecutablePath . Value . FileExists ( ) ) // we have a git path
9791 {
98- Environment . OctorunScriptPath = octorunPath ;
99- } ) ;
92+ Logger . Trace ( "Using git install path from settings: {0}" , gitExecutablePath ) ;
93+ return gitExecutablePath . Value ;
94+ }
95+ return NPath . Default ;
96+ } ) ;
10097
101- setupTask . OnEnd += ( t , path , _ , __ ) =>
98+ getGitFromSettings . OnEnd += ( t , path , _ , __ ) =>
99+ {
100+ if ( path . IsInitialized )
102101 {
103- t . GetEndOfChain ( ) . Then ( setOctorunEnvironmentTask ) . Then ( initializeGitTask ) ;
104- } ;
102+ var state = new GitInstaller . GitInstallationState { GitExecutablePath = path } ;
103+ endTask . PreviousResult = state ;
104+ endTask . Start ( ) ;
105+ return ;
106+ }
107+ Logger . Trace ( "Using portable git" ) ;
105108
106- initializeGitTask . OnEnd += ( t , path , _ , __ ) =>
109+ var setupGit = new GitInstaller ( Environment , ProcessManager , TaskManager ) . SetupGitIfNeeded ( ) ;
110+ t . Then ( setupGit ) ;
111+ setupGit . Finally ( ( s , state ) =>
107112 {
108- if ( path . IsInitialized )
109- {
110- t . GetEndOfChain ( )
111- . Then ( initEnvironmentTask , taskIsTopOfChain : true ) ;
112- return ;
113- }
114- Logger . Trace ( "Using portable git" ) ;
115-
116- var gitInstaller = new GitInstaller ( Environment , ProcessManager , TaskManager ) ;
117-
118- var task = gitInstaller . SetupGitIfNeeded ( ) ;
119- task . Progress ( progressReporter . UpdateProgress ) ;
120- task . OnEnd += ( thisTask , result , success , exception ) =>
121- {
122- thisTask . GetEndOfChain ( )
123- . Then ( initEnvironmentTask , taskIsTopOfChain : true ) ;
124- } ;
113+ endTask . PreviousResult = state ;
114+ endTask . Start ( ) ;
115+ } ) ;
116+ setupGit . Progress ( progressReporter . UpdateProgress ) ;
117+ // append installer task to top chain
118+ } ;
125119
126- // append installer task to top chain
127- t . Then ( task , taskIsTopOfChain : true ) ;
128- } ;
120+ var setupChain = setExistingEnvironmentPath . Then ( setupOctorun ) ;
121+ setupChain . OnEnd += ( t , path , _ , __ ) =>
122+ {
123+ t . GetEndOfChain ( ) . Then ( setOctorunEnvironment ) . Then ( getGitFromSettings ) ;
124+ } ;
129125
130- setupTask . Start ( ) ;
126+ setupChain . Start ( ) ;
131127 }
132128
133129 public ITask InitializeRepository ( )
0 commit comments