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 }