github.com/Redstoneguy129/cli@v0.0.0-20230211220159-15dca4e91917/internal/orgs/list/list.go (about)

     1  package list
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"fmt"
     7  	"strings"
     8  
     9  	"github.com/Redstoneguy129/cli/internal/utils"
    10  	"github.com/charmbracelet/glamour"
    11  	"github.com/spf13/afero"
    12  )
    13  
    14  type Organization struct {
    15  	Id   string `json:"id"`
    16  	Name string `json:"name"`
    17  }
    18  
    19  func Run(ctx context.Context, fsys afero.Fs) error {
    20  	resp, err := utils.GetSupabase().GetOrganizationsWithResponse(ctx)
    21  	if err != nil {
    22  		return err
    23  	}
    24  
    25  	if resp.JSON200 == nil {
    26  		return errors.New("Unexpected error retrieving organizations: " + string(resp.Body))
    27  	}
    28  
    29  	table := `|ID|NAME|
    30  |-|-|
    31  `
    32  	for _, org := range *resp.JSON200 {
    33  		table += fmt.Sprintf("|`%s`|`%s`|\n", org.Id, strings.ReplaceAll(org.Name, "|", "\\|"))
    34  	}
    35  
    36  	r, err := glamour.NewTermRenderer(
    37  		glamour.WithAutoStyle(),
    38  		glamour.WithWordWrap(-1),
    39  	)
    40  	if err != nil {
    41  		return err
    42  	}
    43  	out, err := r.Render(table)
    44  	if err != nil {
    45  		return err
    46  	}
    47  	fmt.Print(out)
    48  
    49  	return nil
    50  }