Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked from drone/go-scm

Package scm provides a unified interface to multiple source code management systems.

License

Notifications You must be signed in to change notification settings

livecycle/go-scm

Repository files navigation

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 (
	"github.com/livecycle/go-scm/scm"
	"github.com/livecycle/go-scm/scm/driver/github"
)
func main() {
	client := github.NewDefault()
}

Create a GitHub Enterprise client:

import (
	"github.com/livecycle/go-scm/scm"
	"github.com/livecycle/go-scm/scm/driver/github"
)
func main() {
 client, err := github.New("https://github.company.com/api/v3")
}

Create a Bitbucket client:

import (
	"github.com/livecycle/go-scm/scm"
	"github.com/livecycle/go-scm/scm/driver/bitbucket"
)
func main() {
 client, err := bitbucket.New()
}

Create a Bitbucket Server (Stash) client:

import (
	"github.com/livecycle/go-scm/scm"
	"github.com/livecycle/go-scm/scm/driver/stash"
)
func main() {
 client, err := stash.New("https://stash.company.com")
}

Create a Gitea client:

import (
	"github.com/livecycle/go-scm/scm"
	"github.com/livecycle/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 (
	"github.com/livecycle/go-scm/scm"
	"github.com/livecycle/go-scm/scm/driver/github"
	"github.com/livecycle/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",
		},
	}
}

About

Package scm provides a unified interface to multiple source code management systems.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%

AltStyle によって変換されたページ (->オリジナル) /