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

     1  package list
     2  
     3  import (
     4  	"context"
     5  	"crypto/md5"
     6  	"errors"
     7  	"fmt"
     8  	"strings"
     9  
    10  	"github.com/charmbracelet/glamour"
    11  	"github.com/spf13/afero"
    12  	"github.com/Redstoneguy129/cli/internal/utils"
    13  )
    14  
    15  func Run(ctx context.Context, fsys afero.Fs) error {
    16  	// 1. Sanity checks.
    17  	{
    18  		if err := utils.AssertSupabaseCliIsSetUpFS(fsys); err != nil {
    19  			return err
    20  		}
    21  	}
    22  
    23  	// 2. Print secrets.
    24  	{
    25  		projectRef, err := utils.LoadProjectRef(fsys)
    26  		if err != nil {
    27  			return err
    28  		}
    29  
    30  		resp, err := utils.GetSupabase().GetSecretsWithResponse(ctx, projectRef)
    31  		if err != nil {
    32  			return err
    33  		}
    34  
    35  		if resp.JSON200 == nil {
    36  			return errors.New("Unexpected error retrieving project secrets: " + string(resp.Body))
    37  		}
    38  
    39  		table := `|NAME|DIGEST|
    40  |-|-|
    41  `
    42  		for _, secret := range *resp.JSON200 {
    43  			table += fmt.Sprintf("|`%s`|`%x`|\n", strings.ReplaceAll(secret.Name, "|", "\\|"), md5.Sum([]byte(secret.Value)))
    44  		}
    45  
    46  		r, err := glamour.NewTermRenderer(
    47  			glamour.WithAutoStyle(),
    48  			glamour.WithWordWrap(-1),
    49  		)
    50  		if err != nil {
    51  			return err
    52  		}
    53  		out, err := r.Render(table)
    54  		if err != nil {
    55  			return err
    56  		}
    57  		fmt.Print(out)
    58  	}
    59  
    60  	return nil
    61  }