From 23e7408f4b0fc05969898f4ec97357254ea8c778 Mon Sep 17 00:00:00 2001 From: James Jackson Date: Wed, 4 Dec 2024 11:07:45 -0600 Subject: [PATCH 1/3] Add `supbase studio` command --- cmd/studio.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 cmd/studio.go diff --git a/cmd/studio.go b/cmd/studio.go new file mode 100644 index 000000000..e8bab6b6e --- /dev/null +++ b/cmd/studio.go @@ -0,0 +1,39 @@ +package cmd + +import ( + "fmt" + "os/exec" + "runtime" + + "github.com/spf13/cobra" + "github.com/supabase/cli/internal/utils" +) + +var studioCmd = &cobra.Command{ + Use: "studio", + Short: "Opens Supabase Studio in your browser", + RunE: func(cmd *cobra.Command, args []string) error { + url := utils.GetSupabaseDashboardURL() + var err error + + switch runtime.GOOS { + case "darwin": + err = exec.Command("open", url).Start() + case "windows": + err = exec.Command("cmd", "/c", "start", url).Start() + default: + err = exec.Command("xdg-open", url).Start() + } + + if err != nil { + return fmt.Errorf("failed to open browser: %w", err) + } + + fmt.Printf("Opening Supabase Studio at %s\n", utils.Aqua(url)) + return nil + }, +} + +func init() { + rootCmd.AddCommand(studioCmd) +} From b4ea63c829a763a2d1ad0dab86060f1f84f03d83 Mon Sep 17 00:00:00 2001 From: James Jackson Date: Fri, 17 Jan 2025 09:37:11 -0600 Subject: [PATCH 2/3] Requested Changes --- cmd/studio.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cmd/studio.go b/cmd/studio.go index e8bab6b6e..e1aa4a80e 100644 --- a/cmd/studio.go +++ b/cmd/studio.go @@ -4,23 +4,41 @@ import ( "fmt" "os/exec" "runtime" + "os" "github.com/spf13/cobra" + "github.com/spf13/afero" "github.com/supabase/cli/internal/utils" + "github.com/supabase/cli/internal/utils/flags" + "github.com/supabase/cli/internal/login" ) var studioCmd = &cobra.Command{ Use: "studio", Short: "Opens Supabase Studio in your browser", RunE: func(cmd *cobra.Command, args []string) error { - url := utils.GetSupabaseDashboardURL() + + fsys := afero.NewOsFs() + if err := flags.LoadConfig(fsys); err != nil { + return err + } + + var url string + if utils.Config.Studio.Enabled { + url = fmt.Sprintf("http://%s:%d", utils.Config.Hostname, utils.Config.Studio.Port) + } else { + fmt.Fprintln(os.Stderr, "Can't open studio because it is disabled in config.toml for project:", flags.ProjectRef) + return nil + } + var err error + ctx := cmd.Context() switch runtime.GOOS { case "darwin": err = exec.Command("open", url).Start() - case "windows": - err = exec.Command("cmd", "/c", "start", url).Start() + case "windows", "linux": + err = login.RunOpenCmd(ctx, url) default: err = exec.Command("xdg-open", url).Start() } From 4ae6f6a9a35155c755158f6876d3703e5817ffa2 Mon Sep 17 00:00:00 2001 From: James Jackson Date: Fri, 17 Jan 2025 10:37:54 -0600 Subject: [PATCH 3/3] Lint --- cmd/studio.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd/studio.go b/cmd/studio.go index e1aa4a80e..5655023f7 100644 --- a/cmd/studio.go +++ b/cmd/studio.go @@ -2,15 +2,15 @@ package cmd import ( "fmt" + "os" "os/exec" "runtime" - "os" - "github.com/spf13/cobra" "github.com/spf13/afero" + "github.com/spf13/cobra" + "github.com/supabase/cli/internal/login" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/internal/utils/flags" - "github.com/supabase/cli/internal/login" ) var studioCmd = &cobra.Command{ @@ -22,7 +22,6 @@ var studioCmd = &cobra.Command{ if err := flags.LoadConfig(fsys); err != nil { return err } - var url string if utils.Config.Studio.Enabled { url = fmt.Sprintf("http://%s:%d", utils.Config.Hostname, utils.Config.Studio.Port)