github.com/supabase/cli@v1.168.1/internal/projects/list/list.go (about) 1 package list 2 3 import ( 4 "context" 5 "fmt" 6 "os" 7 "strings" 8 "time" 9 10 "github.com/go-errors/errors" 11 "github.com/spf13/afero" 12 "github.com/supabase/cli/internal/migration/list" 13 "github.com/supabase/cli/internal/utils" 14 "github.com/supabase/cli/internal/utils/flags" 15 ) 16 17 func Run(ctx context.Context, fsys afero.Fs) error { 18 resp, err := utils.GetSupabase().GetProjectsWithResponse(ctx) 19 if err != nil { 20 return errors.Errorf("failed to list projects: %w", err) 21 } 22 23 if resp.JSON200 == nil { 24 return errors.New("Unexpected error retrieving projects: " + string(resp.Body)) 25 } 26 27 projectRef, err := flags.LoadProjectRef(fsys) 28 if err != nil && err != utils.ErrNotLinked { 29 fmt.Fprintln(os.Stderr, err) 30 } 31 32 table := `LINKED|ORG ID|REFERENCE ID|NAME|REGION|CREATED AT (UTC) 33 |-|-|-|-|-|-| 34 ` 35 for _, project := range *resp.JSON200 { 36 if t, err := time.Parse(time.RFC3339, project.CreatedAt); err == nil { 37 project.CreatedAt = t.UTC().Format("2006-01-02 15:04:05") 38 } 39 if region, ok := utils.RegionMap[project.Region]; ok { 40 project.Region = region 41 } 42 linked := " " 43 if project.Id == projectRef { 44 linked = " ●" 45 } 46 table += fmt.Sprintf( 47 "|`%s`|`%s`|`%s`|`%s`|`%s`|`%s`|\n", 48 linked, 49 project.OrganizationId, 50 project.Id, 51 strings.ReplaceAll(project.Name, "|", "\\|"), 52 project.Region, 53 utils.FormatTimestamp(project.CreatedAt), 54 ) 55 } 56 57 return list.RenderTable(table) 58 }