@@ -10,47 +10,62 @@ class GitInstaller
1010 private readonly CancellationToken cancellationToken ;
1111
1212 private readonly IEnvironment environment ;
13+ private readonly IProcessManager processManager ;
1314 private readonly GitInstallDetails installDetails ;
1415 private readonly IZipHelper sharpZipLibHelper ;
1516
1617 GitInstallationState installationState ;
1718 ITask < NPath > installationTask ;
1819
19- public GitInstaller ( IEnvironment environment , CancellationToken cancellationToken ,
20+ public GitInstaller ( IEnvironment environment , IProcessManager processManager ,
21+ ITaskManager taskManager ,
2022 GitInstallDetails installDetails = null )
2123 {
2224 this . environment = environment ;
25+ this . processManager = processManager ;
2326 this . sharpZipLibHelper = ZipHelper . Instance ;
24- this . cancellationToken = cancellationToken ;
27+ this . cancellationToken = taskManager . Token ;
2528 this . installDetails = installDetails ?? new GitInstallDetails ( environment . UserCachePath , environment . IsWindows ) ;
2629 }
2730
2831 public ITask < NPath > SetupGitIfNeeded ( )
2932 {
3033 //Logger.Trace("SetupGitIfNeeded");
3134
32- installationTask = new FuncTask < NPath > ( cancellationToken , ( _ ) => installDetails . GitExecutablePath )
35+ installationTask = new FuncTask < NPath , NPath > ( cancellationToken , ( success , path ) =>
36+ {
37+ return path ;
38+ } )
3339 { Name = "Git Installation - Complete" } ;
3440 installationTask . OnStart += thisTask => thisTask . UpdateProgress ( 0 , 100 ) ;
3541 installationTask . OnEnd += ( thisTask , result , success , exception ) => thisTask . UpdateProgress ( 100 , 100 ) ;
3642
43+ ITask < NPath > startTask = null ;
3744 if ( ! environment . IsWindows )
3845 {
39- return new FindExecTask ( "git" , cancellationToken )
40- . Then ( installationTask , taskIsTopOfChain : true ) ;
41- }
42-
43- var startTask = new FuncTask < NPath > ( cancellationToken , ( ) =>
46+ startTask = new FindExecTask ( "git" , cancellationToken )
47+ . Configure ( processManager ) ;
48+ // we should doublecheck that system git is usable here
49+ installationState = new GitInstallationState
4450 {
45- installationState = VerifyGitInstallation ( ) ;
46- if ( ! installationState . GitIsValid && ! installationState . GitLfsIsValid )
47- installationState = GrabZipFromResources ( installationState ) ;
48- else
49- Logger . Trace ( "SetupGitIfNeeded: Skipped" ) ;
50- return installDetails . GitExecutablePath ;
51- } )
51+ GitIsValid = true ,
52+ GitLfsIsValid = true
53+ } ;
54+ }
55+ else
56+ {
57+ startTask = new FuncTask < NPath > ( cancellationToken , ( ) =>
58+ {
59+ installationState = VerifyGitInstallation ( ) ;
60+ if ( ! installationState . GitIsValid && ! installationState . GitLfsIsValid )
61+ installationState = GrabZipFromResources ( installationState ) ;
62+ else
63+ Logger . Trace ( "SetupGitIfNeeded: Skipped" ) ;
64+ return installDetails . GitExecutablePath ;
65+ } )
5266 { Name = "Git Installation - Extract" } ;
5367
68+ }
5469
5570 startTask . OnEnd += ( thisTask , path , success , exception ) =>
5671 {
0 commit comments