Skip to content

Commit

Permalink
Merge pull request #241 from matrixx567/win_cmd_quote
Browse files Browse the repository at this point in the history
Fix execution of command with quotes on windows.
  • Loading branch information
RamiAwar authored Feb 1, 2024
2 parents e1b209b + 6467d36 commit 988e248
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 19 deletions.
19 changes: 0 additions & 19 deletions cmd/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@ package cmd
import (
"bytes"
"fmt"
"io"
"os"
"os/exec"
"runtime"
"strings"

"github.com/fatih/color"
Expand All @@ -20,22 +17,6 @@ func editFile(command, file string) error {
return run(command, os.Stdin, os.Stdout)
}

func run(command string, r io.Reader, w io.Writer) error {
var cmd *exec.Cmd
if len(config.Conf.General.Cmd) > 0 {
line := append(config.Conf.General.Cmd, command)
cmd = exec.Command(line[0], line[1:]...)
} else if runtime.GOOS == "windows" {
cmd = exec.Command("cmd", "/c", command)
} else {
cmd = exec.Command("sh", "-c", command)
}
cmd.Stderr = os.Stderr
cmd.Stdout = w
cmd.Stdin = r
return cmd.Run()
}

func filter(options []string, tag string) (commands []string, err error) {
var snippets snippet.Snippets
if err := snippets.Load(); err != nil {
Expand Down
25 changes: 25 additions & 0 deletions cmd/util_unix.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//go:build (darwin && cgo) || linux

package cmd

import (
"io"
"os"
"os/exec"

"github.com/knqyf263/pet/config"
)

func run(command string, r io.Reader, w io.Writer) error {
var cmd *exec.Cmd
if len(config.Conf.General.Cmd) > 0 {
line := append(config.Conf.General.Cmd, command)
cmd = exec.Command(line[0], line[1:]...)
} else {
cmd = exec.Command("sh", "-c", command)
}
cmd.Stderr = os.Stderr
cmd.Stdout = w
cmd.Stdin = r
return cmd.Run()
}
28 changes: 28 additions & 0 deletions cmd/util_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//go:build windows

package cmd

import (
"fmt"
"io"
"os"
"os/exec"
"syscall"

"github.com/knqyf263/pet/config"
)

func run(command string, r io.Reader, w io.Writer) error {
var cmd *exec.Cmd
if len(config.Conf.General.Cmd) > 0 {
line := append(config.Conf.General.Cmd, command)
cmd = exec.Command(line[0], line[1:]...)
} else {
cmd = exec.Command("cmd.exe")
cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf("/c \"%s\"", command)}
}
cmd.Stderr = os.Stderr
cmd.Stdout = w
cmd.Stdin = r
return cmd.Run()
}

0 comments on commit 988e248

Please sign in to comment.