go-scm

module
v1.9.106 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2020 License: BSD-3-Clause

README

go-scm

Documentation Go Report Card

A small library with minimal depenencies for working with Webhooks, Commits, Issues, Pull Requests, Comments, Reviews, Teams and more on multiple git provider:

Building

See the guide to prerequisites, building and running the code

Working on the code

Clone this repository and use go test...

git clone https://github.com/slimm609/go-scm.git
cd go-scm
go test ./...

Writing tests

There are lots of tests for each driver; using sample JSON that comes from the git provider together with the expected canonical JSON.

e.g. I added this test for ListTeams on github: https://github.com/slimm609/go-scm/blob/master/scm/driver/github/org_test.go#L83-116

you then add some real json from the git provider: https://github.com/slimm609/go-scm/blob/master/scm/driver/github/testdata/teams.json and provide the expected json: https://github.com/slimm609/go-scm/blob/master/scm/driver/github/testdata/teams.json.golden

Trying the client on a provider

There are a few little sample programs in scm/factory/examples which are individual binaries you can run from the command line or your IDE.

To test against a git provider of your choice try defining these environment variables:

  • GIT_KIND for the kind of git provider (e.g. github, bitbucketserver, gitlab etc)
  • GIT_SERVER for the URL of the server to communicate with
  • GIT_TOKEN for the git OAuth/private token to talk to the git server

Git API Reference docs

To help hack on the different drivers here's a list of docs which outline the git providers REST APIs

GitHub
Bitbucket Server
Bitbucket Cloud
Gitlab

Fake driver for testing

When testing the use of go-scm its really handy to use the fake provider which lets you populate the in memory resources inside the driver or query resources after a test has run.

client, data := fake.NewDefault()

Community

We have a kanban board of stuff to work on if you fancy contributing!

You can also find us on Slack at kubernetes.slack.com:

Directories

Path Synopsis
pkg
scm
driver/bitbucket
Package bitbucket implements a Bitbucket Cloud client.
Package bitbucket implements a Bitbucket Cloud client.
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