Skip to content

Commit 01b2f02

Browse files
committed
Ability to set projects ids with account name.
This way the plugin can fetch build info about an upstream repo and a fork at the same time.
1 parent 5db7bee commit 01b2f02

File tree

2 files changed

+26
-38
lines changed

2 files changed

+26
-38
lines changed

GitExtensions.settings

+1-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<dictionary>
3-
<item>
4-
<key>
5-
<string>BuildServer.AppVeyor.AppVeyorAccountName</string>
6-
</key>
7-
<value>
8-
<string>gitextensions</string>
9-
</value>
10-
</item>
113
<item>
124
<key>
135
<string>BuildServer.AppVeyor.AppVeyorDisplayGitHubPullRequests</string>
@@ -29,7 +21,7 @@
2921
<string>BuildServer.AppVeyor.AppVeyorProjectName</string>
3022
</key>
3123
<value>
32-
<string>gitextensions</string>
24+
<string>gitextensions/gitextensions</string>
3325
</value>
3426
</item>
3527
<item>

Plugins/BuildServerIntegration/AppVeyorIntegration/AppVeyorAdapter.cs

+25-29
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public void Initialize(IBuildServerWatcher buildServerWatcher, ISettingsSource c
7070
IsCommitInRevisionGrid = isCommitInRevisionGrid;
7171
var accountName = config.GetString("AppVeyorAccountName", null);
7272
_accountToken = config.GetString("AppVeyorAccountToken", null);
73-
if (string.IsNullOrEmpty(accountName))
73+
var projectNamesSetting = config.GetString("AppVeyorProjectName", null);
74+
if (accountName.IsNullOrWhiteSpace() && projectNamesSetting.IsNullOrWhiteSpace())
7475
return;
7576

7677
_shouldLoadTestResults = config.GetBool("AppVeyorLoadTestsResults", false);
@@ -80,7 +81,6 @@ public void Initialize(IBuildServerWatcher buildServerWatcher, ISettingsSource c
8081

8182
_fetchBuilds = new HashSet<string>();
8283
_buildServerWatcher = buildServerWatcher;
83-
var projectNamesSetting = config.GetString("AppVeyorProjectName", null);
8484

8585
_httpClientAppVeyor = GetHttpClient(WebSiteUrl, _accountToken);
8686

@@ -101,6 +101,10 @@ public void Initialize(IBuildServerWatcher buildServerWatcher, ISettingsSource c
101101
}
102102
else
103103
{
104+
if (accountName.IsNullOrWhiteSpace())
105+
{
106+
return;
107+
}
104108
GetResponseAsync(_httpClientAppVeyor, ApiBaseUrl, CancellationToken.None)
105109
.ContinueWith(
106110
task =>
@@ -112,46 +116,38 @@ public void Initialize(IBuildServerWatcher buildServerWatcher, ISettingsSource c
112116
foreach (var project in projects)
113117
{
114118
var projectId = project["slug"].ToString();
119+
projectId = accountName.Combine("/", projectId);
115120
var projectName = project["name"].ToString();
116-
if (useAllProjets)
121+
var projectObj = new Project
117122
{
118-
Projects.Add(projectName, new Project
119-
{
120-
Name = projectName,
121-
Id = projectId,
122-
QueryUrl = BuildQueryUrl(accountName, projectId)
123-
});
124-
}
125-
else
123+
Name = projectName,
124+
Id = projectId,
125+
QueryUrl = BuildQueryUrl(projectId)
126+
};
127+
128+
if (useAllProjets || projectNames.Contains(projectObj.Name))
126129
{
127-
if (projectNames.Contains(projectName))
128-
Projects.Add(projectName,
129-
new Project
130-
{
131-
Name = projectName,
132-
Id = projectId,
133-
QueryUrl = BuildQueryUrl(accountName, projectId)
134-
});
130+
Projects.Add(projectObj.Name, projectObj);
135131
}
136132
}
137133
}).Wait();
138134
}
139135
}
140136
var builds = Projects.Where(p => useAllProjets || projectNames.Contains(p.Value.Name)).Select(p => p.Value);
141137
_allBuilds =
142-
FilterBuilds(builds.SelectMany(project => QueryBuildsResults(accountName, project.Id, project.QueryUrl)));
138+
FilterBuilds(builds.SelectMany(project => QueryBuildsResults(project)));
143139
}
144140

145141
private void FillProjectsFromSettings(string accountName, string[] projectNames)
146142
{
147143
foreach (var projectName in projectNames)
148144
{
149-
var projectId = projectName;
145+
var projectId = accountName.Combine("/", projectName);
150146
Projects.Add(projectName, new Project
151147
{
152148
Name = projectName,
153149
Id = projectId,
154-
QueryUrl = BuildQueryUrl(accountName, projectId)
150+
QueryUrl = BuildQueryUrl(projectId)
155151
});
156152
}
157153
}
@@ -170,9 +166,9 @@ HttpClient GetHttpClient(string baseUrl, string accountToken)
170166
return httpClient;
171167
}
172168

173-
private string BuildQueryUrl(string accountName, string projectId)
169+
private string BuildQueryUrl(string projectId)
174170
{
175-
return ApiBaseUrl + accountName + "/" + projectId + "/history?recordsNumber=" + ProjectsToRetrieveCount;
171+
return ApiBaseUrl + projectId + "/history?recordsNumber=" + ProjectsToRetrieveCount;
176172
}
177173

178174
private class Project
@@ -182,17 +178,17 @@ private class Project
182178
public string QueryUrl;
183179
}
184180

185-
private List<BuildDetails> QueryBuildsResults(string accountName, string projectId, string projectUrl)
181+
private List<BuildDetails> QueryBuildsResults(Project project)
186182
{
187-
var buildTask = GetResponseAsync(_httpClientAppVeyor, projectUrl, CancellationToken.None)
183+
var buildTask = GetResponseAsync(_httpClientAppVeyor, project.QueryUrl, CancellationToken.None)
188184
.ContinueWith(
189185
task =>
190186
{
191187
var jobDescription = JObject.Parse(task.Result);
192188
var builds = jobDescription["builds"];
193189
var myBuilds = builds.Children();
194-
var baseApiUrl = ApiBaseUrl + accountName + "/" + projectId;
195-
var baseWebUrl = WebSiteUrl + "/project/" + accountName + "/" + projectId + "/build/";
190+
var baseApiUrl = ApiBaseUrl + project.Id;
191+
var baseWebUrl = WebSiteUrl + "/project/" + project.Id + "/build/";
196192
var isGitHubRepository = jobDescription["project"]["repositoryType"].ToObject<string>() ==
197193
"gitHub";
198194
var repoName = jobDescription["project"]["repositoryName"].ToObject<string>();
@@ -249,7 +245,7 @@ private List<BuildDetails> QueryBuildsResults(string accountName, string project
249245
Status = status,
250246
StartDate = b["started"] == null ? DateTime.MinValue : b["started"].ToObject<DateTime>(),
251247
BaseWebUrl = baseWebUrl,
252-
Url = WebSiteUrl + "/project/" + accountName + "/" + projectId + "/build/" + version,
248+
Url = WebSiteUrl + "/project/" + project.Id + "/build/" + version,
253249
BaseApiUrl = baseApiUrl,
254250
AppVeyorBuildReportUrl = baseApiUrl + "/build/" + version,
255251
PullRequestText = (pullRequestId != null ? " PR#" + pullRequestId.Value<string>() : string.Empty),

0 commit comments

Comments
 (0)