-
Notifications
You must be signed in to change notification settings - Fork 232
/
Copy pathlink.go
48 lines (44 loc) · 1.37 KB
/
link.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package cmd
import (
"os"
"os/signal"
"github.com/spf13/afero"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/supabase/cli/internal/link"
"github.com/supabase/cli/internal/utils/flags"
"golang.org/x/term"
)
var (
linkCmd = &cobra.Command{
GroupID: groupLocalDev,
Use: "link",
Short: "Link to a Supabase project",
PreRunE: func(cmd *cobra.Command, args []string) error {
if !term.IsTerminal(int(os.Stdin.Fd())) && !viper.IsSet("PROJECT_ID") {
return cmd.MarkFlagRequired("project-ref")
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
ctx, _ := signal.NotifyContext(cmd.Context(), os.Interrupt)
// Use an empty fs to skip loading from file
if err := flags.ParseProjectRef(ctx, afero.NewMemMapFs()); err != nil {
return err
}
fsys := afero.NewOsFs()
if err := flags.LoadConfig(fsys); err != nil {
return err
}
return link.Run(ctx, flags.ProjectRef, fsys)
},
}
)
func init() {
linkFlags := linkCmd.Flags()
linkFlags.StringVar(&flags.ProjectRef, "project-ref", "", "Project ref of the Supabase project.")
linkFlags.StringVarP(&dbPassword, "password", "p", "", "Password to your remote Postgres database.")
// For some reason, BindPFlag only works for StringVarP instead of StringP
cobra.CheckErr(viper.BindPFlag("DB_PASSWORD", linkFlags.Lookup("password")))
rootCmd.AddCommand(linkCmd)
}