Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 25a83b6

Browse files
Structuring tasks to bail early
1 parent 53529ed commit 25a83b6

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

src/GitHub.Api/Git/GitClient.cs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,18 +120,29 @@ public ITask<ValidateGitInstallResult> ValidateGitInstall(NPath path)
120120
Version gitVersion = null;
121121
Version gitLfsVersion = null;
122122

123-
var gitVersionTask = new GitVersionTask(cancellationToken).Configure(processManager, path);
124-
var gitLfsVersionTask = new GitLfsVersionTask(cancellationToken).Configure(processManager, path);
125-
126-
return gitVersionTask
127-
.Then((result, version) => gitVersion = version)
128-
.Then(gitLfsVersionTask)
129-
.Then((result, version) => gitLfsVersion = version)
130-
.Then(success => new ValidateGitInstallResult(success &&
123+
var endTask = new FuncTask<ValidateGitInstallResult>(cancellationToken,
124+
() => new ValidateGitInstallResult(
131125
gitVersion?.CompareTo(Constants.MinimumGitVersion) >= 0 &&
132126
gitLfsVersion?.CompareTo(Constants.MinimumGitLfsVersion) >= 0,
133-
gitVersion, gitLfsVersion)
134-
);
127+
gitVersion, gitLfsVersion));
128+
129+
var gitLfsVersionTask = new GitLfsVersionTask(cancellationToken).Configure(processManager, path);
130+
131+
gitLfsVersionTask
132+
.Then((result, version) => {return gitLfsVersion = version;})
133+
.Then(endTask, taskIsTopOfChain: true);
134+
135+
gitLfsVersionTask.Then(endTask, TaskRunOptions.OnFailure, taskIsTopOfChain:true);
136+
137+
var gitVersionTask = new GitVersionTask(cancellationToken).Configure(processManager, path);
138+
139+
gitVersionTask
140+
.Then((result, version) => { return gitVersion = version; })
141+
.Then(gitLfsVersionTask, taskIsTopOfChain: true);
142+
143+
gitVersionTask.Then(endTask, TaskRunOptions.OnFailure, taskIsTopOfChain:true);
144+
145+
return endTask;
135146
}
136147

137148
public ITask Init(IOutputProcessor<string> processor = null)

0 commit comments

Comments
 (0)