mirror of
https://github.com/GlueOps/autoglue.git
synced 2026-02-13 04:40:05 +01:00
52 lines
970 B
Go
52 lines
970 B
Go
package cmd
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"runtime"
|
|
"time"
|
|
|
|
"github.com/glueops/autoglue/internal/config"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var dbCmd = &cobra.Command{
|
|
Use: "db",
|
|
Short: "Database utilities",
|
|
}
|
|
|
|
var dbPsqlCmd = &cobra.Command{
|
|
Use: "psql",
|
|
Short: "Open a psql session to the app database",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
cfg, err := config.Load()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if cfg.DbURL == "" {
|
|
return errors.New("database.url is empty")
|
|
}
|
|
psql := "psql"
|
|
if runtime.GOOS == "windows" {
|
|
psql = "psql.exe"
|
|
}
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 72*time.Hour)
|
|
defer cancel()
|
|
|
|
psqlCmd := exec.CommandContext(ctx, psql, cfg.DbURL)
|
|
psqlCmd.Stdin, psqlCmd.Stdout, psqlCmd.Stderr = os.Stdin, os.Stdout, os.Stderr
|
|
fmt.Println("Launching psql…")
|
|
return psqlCmd.Run()
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
dbCmd.AddCommand(dbPsqlCmd)
|
|
|
|
rootCmd.AddCommand(dbCmd)
|
|
}
|