twelvelabs / termite

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 git@github.com:twelvelabs/termite.git
cd termite

make setup
make build
make test

# Show full usage
make

About

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

License:MIT License


Languages

Language:Go 98.8%Language:Makefile 1.2%