Skip to content

Instantly share code, notes, and snippets.

@Oppodelldog
Last active April 1, 2023 13:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Oppodelldog/5800bc30d9f7b3def8bcea4023399013 to your computer and use it in GitHub Desktop.
Save Oppodelldog/5800bc30d9f7b3def8bcea4023399013 to your computer and use it in GitHub Desktop.
liberate repositories
package main
import (
"context"
"fmt"
"github.com/google/go-github/v50/github"
"github.com/xanzy/go-gitlab"
"golang.org/x/oauth2"
"os"
)
func main() {
liberateGithubRepositories()
liberateGitlabRepositories()
}
func liberateGithubRepositories() {
var user = os.Getenv("GITHUB_USER")
var token = os.Getenv("GITHUB_TOKEN")
ctx := context.Background()
ts := oauth2.StaticTokenSource(
&oauth2.Token{AccessToken: token},
)
tc := oauth2.NewClient(ctx, ts)
client := github.NewClient(tc)
repos, _, err := client.Repositories.List(context.Background(), user, nil)
if err != nil {
fmt.Println("error listing repos: ", err)
return
}
for _, repo := range repos {
if *repo.DefaultBranch == "master" {
fmt.Println(*repo.CloneURL)
fmt.Println("default branch is master")
_, _, err = client.Repositories.RenameBranch(context.Background(), user, *repo.Name, "master", "main")
if err != nil {
fmt.Println("error renaming master branch: ", err)
continue
}
fmt.Println("renamed master branch to main")
_, _, err = client.Repositories.Edit(context.Background(), user, *repo.Name, &github.Repository{
DefaultBranch: github.String("main"),
})
if err != nil {
fmt.Println("error changing default branch: ", err)
continue
}
fmt.Println("changed default branch to main")
}
}
}
func liberateGitlabRepositories() {
var token = os.Getenv("GITLAB_TOKEN")
client, err := gitlab.NewClient(token)
if err != nil {
fmt.Println("error creating gitlab client: ", err)
return
}
projects, _, err := client.Projects.ListProjects(&gitlab.ListProjectsOptions{
Owned: gitlab.Bool(true),
})
if err != nil {
fmt.Println("error listing projects: ", err)
return
}
for _, project := range projects {
if project.DefaultBranch == "master" {
fmt.Println(project.HTTPURLToRepo)
fmt.Println("default branch is master")
branch, _, err := client.Branches.GetBranch(project.ID, "master")
if err != nil {
fmt.Println("error getting master branch: ", err)
continue
}
var mainBranchName = "main"
_, _, err = client.Branches.CreateBranch(project.ID, &gitlab.CreateBranchOptions{
Branch: &mainBranchName,
Ref: &branch.Commit.ID,
})
if err != nil {
fmt.Println("error creating main branch: ", err)
continue
}
fmt.Println("created main branch")
_, _, err = client.Projects.EditProject(project.ID, &gitlab.EditProjectOptions{
DefaultBranch: &mainBranchName,
})
if err != nil {
fmt.Println("error changing default branch: ", err)
continue
}
fmt.Println("changed default branch to main")
_, err = client.Branches.DeleteBranch(project.ID, "master", nil)
if err != nil {
fmt.Println("error deleting master branch: ", err)
continue
}
fmt.Println("deleted master branch")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment