Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
GeorgDangl committed Jul 16, 2020
2 parents b8129ee + 43d130e commit 1751dc3
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 13 deletions.
21 changes: 20 additions & 1 deletion src/Nuke.GitHub/GitHubSettingsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,24 @@ public static T ResetToken<T>(this T toolSettings) where T : GitHubSettings
return toolSettings;
}
#endregion
}
#region GitHub Enterprise URL
/// <summary><p><em>Sets <see cref="GitHubSettings.Url"/>.</em></p><p>The GitHub Enterprise URL</p></summary>
[Pure]
public static T SetGitHubEnterpriseUrl<T>(this T toolSettings, string url) where T : GitHubSettings
{
var x = new GitHubReleaseSettings();
toolSettings = toolSettings.NewInstance();
toolSettings.Url = url;
return toolSettings;
}
/// <summary><p><em>Resets <see cref="GitHubSettings.Url"/>.</em></p><p>The GitHub Enterprise URL</p></summary>
[Pure]
public static T ResetGitHubEnterpriseUrl<T>(this T toolSettings) where T : GitHubSettings
{
toolSettings = toolSettings.NewInstance();
toolSettings.Url = null;
return toolSettings;
}
#endregion
}
}
6 changes: 5 additions & 1 deletion src/Nuke.GitHub/GitHubTasks.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,11 @@ public partial class GitHubSettings : ToolSettings
/// The Token for the GitHub API
/// </summary>
public virtual string Token { get; internal set; }
}
/// <summary>
/// The URL for GitHub Enterprise
/// </summary>
public virtual string Url { get; internal set; }
}
#endregion
#region GitHubReleaseSettingsExtensions
/// <summary>
Expand Down
36 changes: 25 additions & 11 deletions src/Nuke.GitHub/GitHubTasks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public static async Task PublishRelease(Configure<GitHubReleaseSettings> configu
var settings = configure.Invoke(new GitHubReleaseSettings());
settings.Validate();
var releaseTag = settings.Tag;
var client = GetAuthenticatedClient(settings.Token);
var client = GetAuthenticatedClient(settings.Token, settings.Url);
var existingReleases = await client.Repository.Release.GetAll(settings.RepositoryOwner, settings.RepositoryName);

if (existingReleases.Any(r => r.TagName == releaseTag))
Expand Down Expand Up @@ -70,7 +70,7 @@ public static async Task CreatePullRequest(Configure<GitHubPullRequestSettings>
{
var settings = configure.Invoke(new GitHubPullRequestSettings());
settings.Validate();
var client = GetAuthenticatedClient(settings.Token);
var client = GetAuthenticatedClient(settings.Token, settings.Url);
var repository = await GetRepository(x => settings);
var pullRequests = await client.Repository.PullRequest.GetAllForRepository(repository.Id,
new PullRequestRequest
Expand Down Expand Up @@ -103,33 +103,47 @@ public static async Task<IReadOnlyList<Release>> GetReleases(Configure<GitHubSet
apiOptions.PageCount = (int) Math.Ceiling((double) numberOfReleases.Value / 100);
}

var client = GetAuthenticatedClient(settings.Token);
var client = GetAuthenticatedClient(settings.Token, settings.Url);
return await client.Repository.Release.GetAll(settings.RepositoryOwner, settings.RepositoryName, apiOptions);
}

public static async Task<Repository> GetRepository(Configure<GitHubSettings> configurator)
{
var settings = configurator.Invoke(new GitHubSettings());
settings.Validate();
var client = GetAuthenticatedClient(settings.Token);
var client = GetAuthenticatedClient(settings.Token, settings.Url);
return await client.Repository.Get(settings.RepositoryOwner, settings.RepositoryName);
}

static GitHubClient GetAuthenticatedClient(string token)
static GitHubClient GetAuthenticatedClient(string token, string url)
{
var client = new GitHubClient(new ProductHeaderValue("dangl-bot"))
if (String.IsNullOrEmpty(url))
{
return new GitHubClient(new ProductHeaderValue("dangl-bot"))
{
Credentials = new Credentials(token)
};
return client;
};
}
else
{
return new GitHubClient(new ProductHeaderValue("dangl-bot"), new Uri(url))
{
Credentials = new Credentials(token)
};
}
}

public static (string gitHubOwner, string repositoryName) GetGitHubRepositoryInfo(GitRepository gitRepository)
{
ControlFlow.Assert(gitRepository.IsGitHubRepository(), $"The {nameof(gitRepository)} parameter must reference a GitHub repository.");

ControlFlow.Assert(gitRepository.IsGitHubRepository(), $"The {nameof(gitRepository)} parameter must reference a GitHub repository.");
var split = gitRepository.Identifier.Split('/');
return (split[0], split[1]);
}
}

public static (string gitHubOwner, string repositoryName) GetGitHubEnterpriseRepositoryInfo(GitRepository gitRepository)
{
var split = gitRepository.Identifier.Split('/');
return (split[0], split[1]);
}
}
}

0 comments on commit 1751dc3

Please sign in to comment.