Skip to content

Instantly share code, notes, and snippets.

@jesbrd
Forked from rquackenbush/GitHubApiTest.cs
Created August 2, 2018 15:13
Show Gist options
  • Save jesbrd/525952bbaa33a6748669de7d51c9a8b7 to your computer and use it in GitHub Desktop.
Save jesbrd/525952bbaa33a6748669de7d51c9a8b7 to your computer and use it in GitHub Desktop.
Manipulating github through api calls
using System;
using System.Threading.Tasks;
using Octokit;
using Octokit.Internal;
namespace GithubApiTest
{
class Program
{
static async Task<int> Main(string[] args)
{
var credentials = new Credentials("username", "asdfasdfads");
var credentialStore = new InMemoryCredentialStore(credentials);
var client = new GitHubClient(new ProductHeaderValue("MyAmazingApp"), credentialStore);
//await DeleteAllTagsAsync(client, "Boondocks", "boondocks-raspberrypi");
//await ListAllReleases(client, "Boondocks", "boondocks-raspberrypi");
//await ListAllReleases(client, "Boondocks", "boondocks-raspberrypi");
//await ListTagsAsync(client, "Boondocks", "boondocks-raspberrypi");
return 0;
}
private static async Task<int> ListBranchesAsync(GitHubClient client)
{
var branches = await client.Repository.Branch.GetAll("Boondocks", "github-api-test");
Console.WriteLine("Branches:");
foreach (var branch in branches)
{
Console.WriteLine($" {branch.Name}");
}
return 0;
}
private static async Task<int> DeleteAllTagsAsync(GitHubClient client, string owner, string repositoryName)
{
var tags = await client.Repository.GetAllTags(owner, repositoryName);
Console.WriteLine("Delete all Tags:");
foreach (var tag in tags)
{
Console.WriteLine($" Deleting tag {tag.Name} [{tag.Commit.Sha}]...");
await client.Git.Reference.Delete(owner, repositoryName, $"tags/{tag.Name}");
}
return 0;
}
private static async Task ListAllReleases(GitHubClient client, string owner, string repositoryName)
{
var releases = await client.Repository.Release.GetAll(owner, repositoryName);
Console.WriteLine("Releases:");
foreach (var release in releases)
{
string prerelease = release.Prerelease? "- Prerelease" : "";
Console.WriteLine($" {release.Name} {prerelease}");
}
}
private static async Task DeleteAllReleases(GitHubClient client, string owner, string repositoryName)
{
var releases = await client.Repository.Release.GetAll(owner, repositoryName);
Console.WriteLine("Deleting releases:");
foreach (var release in releases)
{
Console.WriteLine($" Deleting release '{release.Name}' [{release.Id}]...");
await client.Repository.Release.Delete(owner, repositoryName, release.Id);
}
}
private static async Task ListTagsAsync(GitHubClient client, string owner, string repositoryName)
{
var tags = await client.Repository.GetAllTags(owner, repositoryName);
Console.WriteLine("Tags:");
foreach (var tag in tags)
{
Console.WriteLine($" {tag.Name} [{tag.Commit.Sha}]");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment