go-scm

module
v1.15.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2022 License: BSD-2-Clause-Patent

README

Go Doc

Package scm provides a unified interface to multiple source code management systems including GitHub, GitHub Enterprise, Bitbucket, Bitbucket Server, Gitea and Gogs.

Getting Started

Create a GitHub client:

package main

import (
	"git.finology.group/ritesh/go-scm/scm"
	"git.finology.group/ritesh/go-scm/scm/driver/github"
)

func main() {
	client := github.NewDefault()
}

Create a GitHub Enterprise client:

import (
	"git.finology.group/ritesh/go-scm/scm"
	"git.finology.group/ritesh/go-scm/scm/driver/github"
)

func main() {
    client, err := github.New("https://github.company.com/api/v3")
}

Create a Bitbucket client:

import (
	"git.finology.group/ritesh/go-scm/scm"
	"git.finology.group/ritesh/go-scm/scm/driver/bitbucket"
)

func main() {
    client, err := bitbucket.New()
}

Create a Bitbucket Server (Stash) client:

import (
	"git.finology.group/ritesh/go-scm/scm"
	"git.finology.group/ritesh/go-scm/scm/driver/stash"
)

func main() {
    client, err := stash.New("https://stash.company.com")
}

Create a Gitea client:

import (
	"git.finology.group/ritesh/go-scm/scm"
	"git.finology.group/ritesh/go-scm/scm/driver/github"
)

func main() {
    client, err := gitea.New("https://gitea.company.com")
}

Authentication

The scm client does not directly handle authentication. Instead, when creating a new client, provide a http.Client that can handle authentication for you. For convenience, this library includes oauth1 and oauth2 implementations that can be used to authenticate requests.

package main

import (
	"git.finology.group/ritesh/go-scm/scm"
	"git.finology.group/ritesh/go-scm/scm/driver/github"
	"git.finology.group/ritesh/go-scm/scm/driver/transport/oauth2"
)

func main() {
	client := github.NewDefault()

	// provide a custom http.Client with a transport
	// that injects the oauth2 token.
	client.Client := &http.Client{
		Transport: &Transport{
			Source: StaticTokenSource(
				&scm.Token{
					Token: "ecf4c1f9869f59758e679ab54b4",
				},
			),
		},
	}

	// provide a custom http.Client with a transport
	// that injects the private GitLab token through
	// the PRIVATE_TOKEN header variable.
	client.Client := &http.Client{
		Transport: &PrivateToken{
			Token: "ecf4c1f9869f59758e679ab54b4",
		},
	}
}

Directories

Path Synopsis
scm
driver/bitbucket
Package bitbucket implements a Bitbucket Cloud client.
Package bitbucket implements a Bitbucket Cloud client.
driver/bitbucket/integration
Package integration implements a Bitbucket Cloud integration tests.
Package integration implements a Bitbucket Cloud integration tests.
driver/gitea
Package gitea implements a Gitea client.
Package gitea implements a Gitea client.
driver/github
Package github implements a GitHub client.
Package github implements a GitHub client.
driver/gitlab
Package gitlab implements a GitLab client.
Package gitlab implements a GitLab client.
driver/gogs
Package gogs implements a Gogs client.
Package gogs implements a Gogs client.
driver/stash
Package stash implements a Bitbucket Server client.
Package stash implements a Bitbucket Server client.
transport
Package transport provides facilities for setting up authenticated http.RoundTripper given credentials and base RoundTripper.
Package transport provides facilities for setting up authenticated http.RoundTripper given credentials and base RoundTripper.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL