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

Commit c88aab6

Browse files
Merge pull request #676 from github-for-unity/fixes/missed-a-thing
Fix initial installation of git and octorun
2 parents a5aeb79 + a82ee33 commit c88aab6

File tree

6 files changed

+47
-51
lines changed

6 files changed

+47
-51
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 44 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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()

src/GitHub.Api/Installer/GitInstaller.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public ITask<GitInstallationState> SetupGitIfNeeded()
7373
{
7474
return VerifyPortableGitInstallation();
7575
})
76-
{ Name = "Git Installation - Extract" };
76+
{ Name = "Git Installation - Verify" };
7777
}
7878

7979
startTask = startTask.Then(new FuncTask<GitInstallationState, GitInstallationState>(cancellationToken, (success, installState) =>

unity/PackageProject/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*.xml
66
*.local.json
77
*.zip
8+
*.md5
89
*.dylib
910
*.so
1011
*.bundle

unity/PackageProject/Assets/Plugins/GitHub/Editor/Resources/octorun.zip.md5

Lines changed: 0 additions & 1 deletion
This file was deleted.

unity/TestProject/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*.dylib
99
*.so
1010
*.bundle
11+
*.md5
1112

1213
# ignoring this for now
1314
*.meta

unity/TestProject/Assets/Plugins/GitHub/Editor/Resources/octorun.zip.md5

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)