@@ -10,47 +10,62 @@ class GitInstaller
10
10
private readonly CancellationToken cancellationToken ;
11
11
12
12
private readonly IEnvironment environment ;
13
+ private readonly IProcessManager processManager ;
13
14
private readonly GitInstallDetails installDetails ;
14
15
private readonly IZipHelper sharpZipLibHelper ;
15
16
16
17
GitInstallationState installationState ;
17
18
ITask < NPath > installationTask ;
18
19
19
- public GitInstaller ( IEnvironment environment , CancellationToken cancellationToken ,
20
+ public GitInstaller ( IEnvironment environment , IProcessManager processManager ,
21
+ ITaskManager taskManager ,
20
22
GitInstallDetails installDetails = null )
21
23
{
22
24
this . environment = environment ;
25
+ this . processManager = processManager ;
23
26
this . sharpZipLibHelper = ZipHelper . Instance ;
24
- this . cancellationToken = cancellationToken ;
27
+ this . cancellationToken = taskManager . Token ;
25
28
this . installDetails = installDetails ?? new GitInstallDetails ( environment . UserCachePath , environment . IsWindows ) ;
26
29
}
27
30
28
31
public ITask < NPath > SetupGitIfNeeded ( )
29
32
{
30
33
//Logger.Trace("SetupGitIfNeeded");
31
34
32
- installationTask = new FuncTask < NPath > ( cancellationToken , ( _ ) => installDetails . GitExecutablePath )
35
+ installationTask = new FuncTask < NPath , NPath > ( cancellationToken , ( success , path ) =>
36
+ {
37
+ return path ;
38
+ } )
33
39
{ Name = "Git Installation - Complete" } ;
34
40
installationTask . OnStart += thisTask => thisTask . UpdateProgress ( 0 , 100 ) ;
35
41
installationTask . OnEnd += ( thisTask , result , success , exception ) => thisTask . UpdateProgress ( 100 , 100 ) ;
36
42
43
+ ITask < NPath > startTask = null ;
37
44
if ( ! environment . IsWindows )
38
45
{
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
44
50
{
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
+ } )
52
66
{ Name = "Git Installation - Extract" } ;
53
67
68
+ }
54
69
55
70
startTask . OnEnd += ( thisTask , path , success , exception ) =>
56
71
{
0 commit comments