From 845e8aa4975cd06b69dbba0faf1708b514ef69d9 Mon Sep 17 00:00:00 2001 From: Stefano Saffran Date: Wed, 31 May 2023 11:02:03 -0400 Subject: [PATCH] feat: add support for executing files --- internal/cmd/root.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/internal/cmd/root.go b/internal/cmd/root.go index a20f0d1..d0911ae 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -3,6 +3,7 @@ package cmd import ( "fmt" "os" + "strings" _ "github.com/mattn/go-sqlite3" "github.com/spf13/cobra" @@ -15,6 +16,7 @@ type RootArgs struct { statements string quiet bool authToken string + file string } func NewRootCmd() *cobra.Command { @@ -44,11 +46,38 @@ func NewRootCmd() *cobra.Command { return shell.RunShellLine(shellConfig, rootArgs.statements) } + if cmd.Flag("from-file").Changed { + if len(rootArgs.file) == 0 { + return fmt.Errorf("file not provided") + } + + file, err := os.Open(rootArgs.file) + if err != nil { + return err + } + defer file.Close() + + stat, err := file.Stat() + if err != nil { + return err + } + + content := make([]byte, stat.Size()) + _, err = file.Read(content) + if err != nil { + return err + } + + return shell.RunShellLine(shellConfig, strings.TrimSpace(string(content))) + + } + return shell.RunShell(shellConfig) }, } rootCmd.Flags().StringVarP(&rootArgs.statements, "exec", "e", "", "SQL statements separated by ;") + rootCmd.Flags().StringVarP(&rootArgs.file, "from-file", "f", "", "Execute commands from a file") rootCmd.Flags().BoolVarP(&rootArgs.quiet, "quiet", "q", false, "Don't print welcome message") rootCmd.Flags().StringVar(&rootArgs.authToken, "auth", "", "Add a JWT Token.")