@@ -52,82 +52,78 @@ protected void Initialize()
52
52
public void Run ( bool firstRun )
53
53
{
54
54
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 } ;
55
60
56
61
ITask < string > setExistingEnvironmentPath ;
57
62
if ( Environment . IsMac )
58
63
{
59
64
setExistingEnvironmentPath = new SimpleProcessTask ( CancellationToken , "bash" . ToNPath ( ) , "-c \" /usr/libexec/path_helper\" " )
60
65
. Configure ( ProcessManager , dontSetupGit : true )
61
66
. 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 ) ;
63
68
}
64
69
else
65
70
{
66
71
setExistingEnvironmentPath = new FuncTask < string > ( CancellationToken , ( ) => null ) ;
67
72
}
68
73
69
- setExistingEnvironmentPath . OnEnd += ( t , path , success , ex ) => {
74
+ setExistingEnvironmentPath . OnEnd += ( t , path , success , ex ) =>
75
+ {
70
76
if ( path != null )
71
77
{
72
78
Logger . Trace ( "Existing Environment Path Original:{0} Updated:{1}" , Environment . Path , path ) ;
73
79
Environment . Path = path ;
74
80
}
75
81
} ;
76
82
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 ) ;
82
86
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
97
91
{
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
+ } ) ;
100
97
101
- setupTask . OnEnd += ( t , path , _ , __ ) =>
98
+ getGitFromSettings . OnEnd += ( t , path , _ , __ ) =>
99
+ {
100
+ if ( path . IsInitialized )
102
101
{
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" ) ;
105
108
106
- initializeGitTask . OnEnd += ( t , path , _ , __ ) =>
109
+ var setupGit = new GitInstaller ( Environment , ProcessManager , TaskManager ) . SetupGitIfNeeded ( ) ;
110
+ setupGit . Finally ( ( s , state ) =>
107
111
{
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
- } ;
112
+ endTask . PreviousResult = state ;
113
+ endTask . Start ( ) ;
114
+ } ) ;
115
+ setupGit . Progress ( progressReporter . UpdateProgress ) ;
116
+ // append installer task to top chain
117
+ t . Then ( setupGit ) ;
118
+ } ;
125
119
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
+ } ;
129
125
130
- setupTask . Start ( ) ;
126
+ setupChain . Start ( ) ;
131
127
}
132
128
133
129
public ITask InitializeRepository ( )
0 commit comments