Skip to content

Latest commit

 

History

History
84 lines (65 loc) · 2.49 KB

README.md

File metadata and controls

84 lines (65 loc) · 2.49 KB

Termite

docs build codecov

Termite is a collection of utilities for building CLI tools in Go.

A few things to note:

  • This is still a WIP. I'm in the process of extracting things here when I find reusable patterns that I'm repeating often. This probably won't be stable or useful for others for a while, so... use at your own risk 😬 (at least until a 1.0 release).
  • Some of these packages were inspired or copied from the GitHub CLI project. I'm a big fan ❤️ and I've done my best to give proper attribution per the license. If anyone from that team feels I've misappropriated anything, please let me know and I'll try to make amends.

Install

go get github.com/twelvelabs/termite

Usage

package main

import (
    "github.com/twelvelabs/termite/api"
    "github.com/twelvelabs/termite/conf"
    "github.com/twelvelabs/termite/ui"
)

func main() {
    type Config struct {
        BaseURL string `default:"https://0.0.0.0/api/v1" validate:"required,url"`
        Debug   bool   `default:"true"`
    }

    // Loads and validates config values from ~/.config/my-app/config.yaml
    config, _ := conf.NewLoader(&Config{}, ConfigFile("my-app")).Load()
    client := api.NewRESTClient(&api.ClientOptions{
        BaseURL: config.BaseURL,
    })

    type APIResponse struct {
        Status string `json:"statusMessage"`
    }

    u := ui.NewUserInterface(ui.NewIOStreams())
    ok, _ := u.Confirm("Proceed?", true, "Some help text...")
    if ok {
        u.ProgressIndicator.Start("Requesting")
        resp := &APIResponse{}
        err := client.Get("/some/endpoint", resp)
        if err != nil {
            u.Out(u.FailureIcon() + " API failure: %v\n", err)
        } else {
            u.Out(u.InfoIcon() + " API success: %v\n", resp.Status)
        }
        u.ProgressIndicator.Stop()
    }
    u.Out(u.SuccessIcon() + " Done\n")
}

Output:

? Proceed? Yes
• API success: some status message
✓ Done

Development

git clone [email protected]:twelvelabs/termite.git
cd termite

make setup
make build
make test

# Show full usage
make