From 4512f3d35d6429f1716e95b7141bcb7e740244ca Mon Sep 17 00:00:00 2001 From: abs3ntdev Date: Thu, 23 Mar 2023 14:10:35 -0700 Subject: [PATCH 1/5] psql --- main.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/main.go b/main.go index 89d4763..367982e 100644 --- a/main.go +++ b/main.go @@ -254,6 +254,13 @@ The word "last": } addConfigFlagsToCommand(cmdStatus) + cmdPsql := &cobra.Command{ + Use: "psql", + Short: "Connects to database using psql", + Run: Psql, + } + addConfigFlagsToCommand(cmdPsql) + cmdNew := &cobra.Command{ Use: "new NAME", Short: "Generate a new migration", @@ -306,6 +313,7 @@ The word "last": rootCmd.AddCommand(cmdRenumber) rootCmd.AddCommand(cmdCode) rootCmd.AddCommand(cmdStatus) + rootCmd.AddCommand(cmdPsql) rootCmd.AddCommand(cmdNew) rootCmd.AddCommand(cmdVersion) rootCmd.Execute() @@ -682,6 +690,26 @@ func SnapshotCode(cmd *cobra.Command, args []string) { } } +func Psql(cmd *cobra.Command, args []string) { + ctx := context.Background() + config, conn := loadConfigAndConnectToDB(ctx) + defer conn.Close(ctx) + psql_bin := "psql" + if psql_path := os.Getenv("PSQL_BIN_PATH"); psql_path != "" { + psql_bin = psql_path + } + constring := fmt.Sprintf("postgres://%s:%s@%s:%d/%s", config.ConnConfig.User, config.ConnConfig.Password, config.ConnConfig.Host, config.ConnConfig.Port, config.ConnConfig.Database) + com := exec.Command(psql_bin, constring) + com.Stdin = os.Stdin + com.Stdout = os.Stdout + com.Stderr = os.Stderr + err := com.Run() + if err != nil { + fmt.Fprintln(os.Stderr, "Failed to launch psql:", err) + os.Exit(1) + } +} + func Status(cmd *cobra.Command, args []string) { ctx := context.Background() config, conn := loadConfigAndConnectToDB(ctx) From 9ca7c4104e3192d384a974df97f3b242213bc058 Mon Sep 17 00:00:00 2001 From: abs3ntdev Date: Fri, 24 Mar 2023 17:20:37 -0700 Subject: [PATCH 2/5] read ssl mode/cert from config file, uses connstring from file if present --- main.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 367982e..90a8c54 100644 --- a/main.go +++ b/main.go @@ -88,6 +88,7 @@ var newMigrationText = `-- Write your migrate up statements here type Config struct { ConnConfig pgx.ConnConfig + ConnString string SslMode string SslRootCert string VersionTable string @@ -698,8 +699,27 @@ func Psql(cmd *cobra.Command, args []string) { if psql_path := os.Getenv("PSQL_BIN_PATH"); psql_path != "" { psql_bin = psql_path } - constring := fmt.Sprintf("postgres://%s:%s@%s:%d/%s", config.ConnConfig.User, config.ConnConfig.Password, config.ConnConfig.Host, config.ConnConfig.Port, config.ConnConfig.Database) - com := exec.Command(psql_bin, constring) + + connstring := config.ConnString + if connstring == "" { + options := "" + if ssl_mode := config.SslMode; ssl_mode != "" { + options += fmt.Sprintf("sslmode=%s&", ssl_mode) + } + if ssl_cert := config.SslRootCert; ssl_cert != "" { + options += fmt.Sprintf("sslcert=%s", ssl_cert) + } + connstring = fmt.Sprintf( + "postgres://%s:%s@%s:%d/%s?%s", + config.ConnConfig.User, + config.ConnConfig.Password, + config.ConnConfig.Host, + config.ConnConfig.Port, + config.ConnConfig.Database, + options, + ) + } + com := exec.Command(psql_bin, connstring) com.Stdin = os.Stdin com.Stdout = os.Stdout com.Stderr = os.Stderr @@ -983,6 +1003,8 @@ func appendConfigFromFile(config *Config, path string) error { } if connString, ok := file.Get("database", "conn_string"); ok { + config.ConnString = connString + fmt.Println(config.ConnString) if connConfig, err := pgx.ParseConfig(connString); err == nil { config.ConnConfig = *connConfig } else { @@ -1052,7 +1074,6 @@ func appendConfigFromFile(config *Config, path string) error { if password, ok := file.Get("ssh-tunnel", "password"); ok { config.SSHConnConfig.Password = password } - return nil } From 77581437d890d8e983ae4a6cfce4664422e4b184 Mon Sep 17 00:00:00 2001 From: abs3ntdev Date: Sat, 25 Mar 2023 16:53:29 -0700 Subject: [PATCH 3/5] tern print-connstring --- main.go | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/main.go b/main.go index c188879..0cabc68 100644 --- a/main.go +++ b/main.go @@ -255,12 +255,12 @@ The word "last": } addConfigFlagsToCommand(cmdStatus) - cmdPsql := &cobra.Command{ - Use: "psql", - Short: "Connects to database using psql", - Run: Psql, + cmdPrintConnString := &cobra.Command{ + Use: "print-connstring", + Short: "Prints a connection string based on the provided config file/arguments", + Run: PrintConnString, } - addConfigFlagsToCommand(cmdPsql) + addConfigFlagsToCommand(cmdPrintConnString) cmdNew := &cobra.Command{ Use: "new NAME", @@ -314,7 +314,7 @@ The word "last": rootCmd.AddCommand(cmdRenumber) rootCmd.AddCommand(cmdCode) rootCmd.AddCommand(cmdStatus) - rootCmd.AddCommand(cmdPsql) + rootCmd.AddCommand(cmdPrintConnString) rootCmd.AddCommand(cmdNew) rootCmd.AddCommand(cmdVersion) rootCmd.Execute() @@ -691,14 +691,10 @@ func SnapshotCode(cmd *cobra.Command, args []string) { } } -func Psql(cmd *cobra.Command, args []string) { +func PrintConnString(cmd *cobra.Command, args []string) { ctx := context.Background() config, conn := loadConfigAndConnectToDB(ctx) defer conn.Close(ctx) - psql_bin := "psql" - if psql_path := os.Getenv("PSQL_BIN_PATH"); psql_path != "" { - psql_bin = psql_path - } connstring := config.ConnString if connstring == "" { @@ -719,15 +715,7 @@ func Psql(cmd *cobra.Command, args []string) { options, ) } - com := exec.Command(psql_bin, connstring) - com.Stdin = os.Stdin - com.Stdout = os.Stdout - com.Stderr = os.Stderr - err := com.Run() - if err != nil { - fmt.Fprintln(os.Stderr, "Failed to launch psql:", err) - os.Exit(1) - } + fmt.Println(connstring) } func Status(cmd *cobra.Command, args []string) { From 85a1fea07267048800adc48d60c83d0a05fab3fd Mon Sep 17 00:00:00 2001 From: abs3ntdev Date: Sat, 25 Mar 2023 16:54:25 -0700 Subject: [PATCH 4/5] no new line --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index 0cabc68..2acccb8 100644 --- a/main.go +++ b/main.go @@ -715,7 +715,7 @@ func PrintConnString(cmd *cobra.Command, args []string) { options, ) } - fmt.Println(connstring) + fmt.Print(connstring) } func Status(cmd *cobra.Command, args []string) { From 7b250a2a6818f57447c5c844ca1a8504c8657c2f Mon Sep 17 00:00:00 2001 From: abs3ntdev Date: Sun, 26 Mar 2023 11:42:08 -0700 Subject: [PATCH 5/5] remove test print --- main.go | 1 - 1 file changed, 1 deletion(-) diff --git a/main.go b/main.go index 2acccb8..a9ef736 100644 --- a/main.go +++ b/main.go @@ -995,7 +995,6 @@ func appendConfigFromFile(config *Config, path string) error { if connString, ok := file.Get("database", "conn_string"); ok { config.ConnString = connString - fmt.Println(config.ConnString) if connConfig, err := pgx.ParseConfig(connString); err == nil { config.ConnConfig = *connConfig } else {