Skip to content

Latest commit

 

History

History
61 lines (46 loc) · 2.11 KB

README.md

File metadata and controls

61 lines (46 loc) · 2.11 KB

Go library for the GitHub CLI

go-gh is a collection of Go modules to make authoring GitHub CLI extensions easier.

Modules from this library will obey GitHub CLI conventions by default:

  • CurrentRepository() respects GH_REPO and reads from git remote configuration as fallback;
  • GitHub API requests will be authenticated using the same mechanism as gh, respecting GH_TOKEN and GH_HOST if present;
  • Inspecting term capabilities is done with respect to e.g. NO_COLOR;
  • Generating table- or Go template-based output uses the same engine as gh;
  • The browser module activates the user's preferred web browser.

Usage

See the go-gh full reference documentation.

package main

import (
	"fmt"
	"log"
	"github.com/cli/go-gh"
)

func main() {
	// These examples assume `gh` is installed and has been authenticated

	// Shell out to a gh command and read its output
	issueList, _, err := gh.Exec("issue", "list", "--repo", "cli/cli", "--limit", "5")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(issueList.String())
	
	// Use an API helper to grab repository tags
	client, err := gh.RESTClient(nil)
	if err != nil {
		log.Fatal(err)
	}
	response := []struct{
		Name string
	}{}
	err = client.Get("repos/cli/cli/tags", &response)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(response)
}

See examples for more demonstrations of usage.

Contributing

If anything feels off, or if you feel that some functionality is missing, please check out our contributing docs. There you will find instructions for sharing your feedback and for submitting pull requests to the project. Thank you!