go.mod: github.com/mattn/go-shellwords v1.0.11
adds go module support, among others Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
59a6259f8c
commit
d2d89ddfad
2
go.mod
2
go.mod
@ -16,7 +16,7 @@ require (
|
|||||||
github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4 // indirect
|
github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4 // indirect
|
||||||
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c
|
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c
|
||||||
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56
|
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56
|
||||||
github.com/mattn/go-shellwords v1.0.3
|
github.com/mattn/go-shellwords v1.0.11
|
||||||
github.com/onsi/ginkgo v1.13.0
|
github.com/onsi/ginkgo v1.13.0
|
||||||
github.com/onsi/gomega v1.10.3
|
github.com/onsi/gomega v1.10.3
|
||||||
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8
|
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8
|
||||||
|
4
go.sum
4
go.sum
@ -45,8 +45,8 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56 h1:742eGXur0715JMq73aD95/FU0XpVKXqNuTnEfXsLOYQ=
|
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56 h1:742eGXur0715JMq73aD95/FU0XpVKXqNuTnEfXsLOYQ=
|
||||||
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA=
|
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA=
|
||||||
github.com/mattn/go-shellwords v1.0.3 h1:K/VxK7SZ+cvuPgFSLKi5QPI9Vr/ipOf4C1gN+ntueUk=
|
github.com/mattn/go-shellwords v1.0.11 h1:vCoR9VPpsk/TZFW2JwK5I9S0xdrtUq2bph6/YjEPnaw=
|
||||||
github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
|
github.com/mattn/go-shellwords v1.0.11/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
|
||||||
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
||||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
|
14
vendor/github.com/mattn/go-shellwords/.travis.yml
generated
vendored
14
vendor/github.com/mattn/go-shellwords/.travis.yml
generated
vendored
@ -1,8 +1,16 @@
|
|||||||
|
arch:
|
||||||
|
- amd64
|
||||||
|
- ppc64le
|
||||||
language: go
|
language: go
|
||||||
|
sudo: false
|
||||||
go:
|
go:
|
||||||
- tip
|
- tip
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- go get github.com/mattn/goveralls
|
- go get -t -v ./...
|
||||||
- go get golang.org/x/tools/cmd/cover
|
|
||||||
script:
|
script:
|
||||||
- $HOME/gopath/bin/goveralls -repotoken 2FMhp57u8LcstKL9B190fLTcEnBtAAiEL
|
- ./go.test.sh
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
10
vendor/github.com/mattn/go-shellwords/README.md
generated
vendored
10
vendor/github.com/mattn/go-shellwords/README.md
generated
vendored
@ -1,7 +1,9 @@
|
|||||||
# go-shellwords
|
# go-shellwords
|
||||||
|
|
||||||
[](https://coveralls.io/r/mattn/go-shellwords?branch=master)
|
[](https://codecov.io/gh/mattn/go-shellwords)
|
||||||
[](https://travis-ci.org/mattn/go-shellwords)
|
[](https://travis-ci.org/mattn/go-shellwords)
|
||||||
|
[](https://pkg.go.dev/github.com/mattn/go-shellwords)
|
||||||
|
[](https://github.com/mattn/go-shellwords/actions)
|
||||||
|
|
||||||
Parse line as shell words.
|
Parse line as shell words.
|
||||||
|
|
||||||
@ -12,6 +14,12 @@ args, err := shellwords.Parse("./foo --bar=baz")
|
|||||||
// args should be ["./foo", "--bar=baz"]
|
// args should be ["./foo", "--bar=baz"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```go
|
||||||
|
envs, args, err := shellwords.ParseWithEnvs("FOO=foo BAR=baz ./foo --bar=baz")
|
||||||
|
// envs should be ["FOO=foo", "BAR=baz"]
|
||||||
|
// args should be ["./foo", "--bar=baz"]
|
||||||
|
```
|
||||||
|
|
||||||
```go
|
```go
|
||||||
os.Setenv("FOO", "bar")
|
os.Setenv("FOO", "bar")
|
||||||
p := shellwords.NewParser()
|
p := shellwords.NewParser()
|
||||||
|
3
vendor/github.com/mattn/go-shellwords/go.mod
generated
vendored
Normal file
3
vendor/github.com/mattn/go-shellwords/go.mod
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module github.com/mattn/go-shellwords
|
||||||
|
|
||||||
|
go 1.13
|
12
vendor/github.com/mattn/go-shellwords/go.test.sh
generated
vendored
Normal file
12
vendor/github.com/mattn/go-shellwords/go.test.sh
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
echo "" > coverage.txt
|
||||||
|
|
||||||
|
for d in $(go list ./... | grep -v vendor); do
|
||||||
|
go test -coverprofile=profile.out -covermode=atomic "$d"
|
||||||
|
if [ -f profile.out ]; then
|
||||||
|
cat profile.out >> coverage.txt
|
||||||
|
rm profile.out
|
||||||
|
fi
|
||||||
|
done
|
234
vendor/github.com/mattn/go-shellwords/shellwords.go
generated
vendored
234
vendor/github.com/mattn/go-shellwords/shellwords.go
generated
vendored
@ -1,9 +1,11 @@
|
|||||||
package shellwords
|
package shellwords
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"strings"
|
||||||
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -11,8 +13,6 @@ var (
|
|||||||
ParseBacktick bool = false
|
ParseBacktick bool = false
|
||||||
)
|
)
|
||||||
|
|
||||||
var envRe = regexp.MustCompile(`\$({[a-zA-Z0-9_]+}|[a-zA-Z0-9_]+)`)
|
|
||||||
|
|
||||||
func isSpace(r rune) bool {
|
func isSpace(r rune) bool {
|
||||||
switch r {
|
switch r {
|
||||||
case ' ', '\t', '\r', '\n':
|
case ' ', '\t', '\r', '\n':
|
||||||
@ -21,40 +21,124 @@ func isSpace(r rune) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func replaceEnv(s string) string {
|
func replaceEnv(getenv func(string) string, s string) string {
|
||||||
return envRe.ReplaceAllStringFunc(s, func(s string) string {
|
if getenv == nil {
|
||||||
s = s[1:]
|
getenv = os.Getenv
|
||||||
if s[0] == '{' {
|
}
|
||||||
s = s[1 : len(s)-1]
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
rs := []rune(s)
|
||||||
|
for i := 0; i < len(rs); i++ {
|
||||||
|
r := rs[i]
|
||||||
|
if r == '\\' {
|
||||||
|
i++
|
||||||
|
if i == len(rs) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
buf.WriteRune(rs[i])
|
||||||
|
continue
|
||||||
|
} else if r == '$' {
|
||||||
|
i++
|
||||||
|
if i == len(rs) {
|
||||||
|
buf.WriteRune(r)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if rs[i] == 0x7b {
|
||||||
|
i++
|
||||||
|
p := i
|
||||||
|
for ; i < len(rs); i++ {
|
||||||
|
r = rs[i]
|
||||||
|
if r == '\\' {
|
||||||
|
i++
|
||||||
|
if i == len(rs) {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if r == 0x7d || (!unicode.IsLetter(r) && r != '_' && !unicode.IsDigit(r)) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if r != 0x7d {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
if i > p {
|
||||||
|
buf.WriteString(getenv(s[p:i]))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p := i
|
||||||
|
for ; i < len(rs); i++ {
|
||||||
|
r := rs[i]
|
||||||
|
if r == '\\' {
|
||||||
|
i++
|
||||||
|
if i == len(rs) {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !unicode.IsLetter(r) && r != '_' && !unicode.IsDigit(r) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if i > p {
|
||||||
|
buf.WriteString(getenv(s[p:i]))
|
||||||
|
i--
|
||||||
|
} else {
|
||||||
|
buf.WriteString(s[p:])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
buf.WriteRune(r)
|
||||||
}
|
}
|
||||||
return os.Getenv(s)
|
}
|
||||||
})
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
type Parser struct {
|
type Parser struct {
|
||||||
ParseEnv bool
|
ParseEnv bool
|
||||||
ParseBacktick bool
|
ParseBacktick bool
|
||||||
Position int
|
Position int
|
||||||
|
Dir string
|
||||||
|
|
||||||
|
// If ParseEnv is true, use this for getenv.
|
||||||
|
// If nil, use os.Getenv.
|
||||||
|
Getenv func(string) string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewParser() *Parser {
|
func NewParser() *Parser {
|
||||||
return &Parser{ParseEnv, ParseBacktick, 0}
|
return &Parser{
|
||||||
|
ParseEnv: ParseEnv,
|
||||||
|
ParseBacktick: ParseBacktick,
|
||||||
|
Position: 0,
|
||||||
|
Dir: "",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type argType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
argNo argType = iota
|
||||||
|
argSingle
|
||||||
|
argQuoted
|
||||||
|
)
|
||||||
|
|
||||||
func (p *Parser) Parse(line string) ([]string, error) {
|
func (p *Parser) Parse(line string) ([]string, error) {
|
||||||
args := []string{}
|
args := []string{}
|
||||||
buf := ""
|
buf := ""
|
||||||
var escaped, doubleQuoted, singleQuoted, backQuote bool
|
var escaped, doubleQuoted, singleQuoted, backQuote, dollarQuote bool
|
||||||
backtick := ""
|
backtick := ""
|
||||||
|
|
||||||
pos := -1
|
pos := -1
|
||||||
got := false
|
got := argNo
|
||||||
|
|
||||||
|
i := -1
|
||||||
loop:
|
loop:
|
||||||
for i, r := range line {
|
for _, r := range line {
|
||||||
|
i++
|
||||||
if escaped {
|
if escaped {
|
||||||
buf += string(r)
|
buf += string(r)
|
||||||
escaped = false
|
escaped = false
|
||||||
|
got = argSingle
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,30 +152,40 @@ loop:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if isSpace(r) {
|
if isSpace(r) {
|
||||||
if singleQuoted || doubleQuoted || backQuote {
|
if singleQuoted || doubleQuoted || backQuote || dollarQuote {
|
||||||
buf += string(r)
|
buf += string(r)
|
||||||
backtick += string(r)
|
backtick += string(r)
|
||||||
} else if got {
|
} else if got != argNo {
|
||||||
if p.ParseEnv {
|
if p.ParseEnv {
|
||||||
buf = replaceEnv(buf)
|
if got == argSingle {
|
||||||
|
parser := &Parser{ParseEnv: false, ParseBacktick: false, Position: 0, Dir: p.Dir}
|
||||||
|
strs, err := parser.Parse(replaceEnv(p.Getenv, buf))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
args = append(args, strs...)
|
||||||
|
} else {
|
||||||
|
args = append(args, replaceEnv(p.Getenv, buf))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
args = append(args, buf)
|
||||||
}
|
}
|
||||||
args = append(args, buf)
|
|
||||||
buf = ""
|
buf = ""
|
||||||
got = false
|
got = argNo
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
switch r {
|
switch r {
|
||||||
case '`':
|
case '`':
|
||||||
if !singleQuoted && !doubleQuoted {
|
if !singleQuoted && !doubleQuoted && !dollarQuote {
|
||||||
if p.ParseBacktick {
|
if p.ParseBacktick {
|
||||||
if backQuote {
|
if backQuote {
|
||||||
out, err := shellRun(backtick)
|
out, err := shellRun(backtick, p.Dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
buf = out
|
buf = buf[:len(buf)-len(backtick)] + out
|
||||||
}
|
}
|
||||||
backtick = ""
|
backtick = ""
|
||||||
backQuote = !backQuote
|
backQuote = !backQuote
|
||||||
@ -100,38 +194,87 @@ loop:
|
|||||||
backtick = ""
|
backtick = ""
|
||||||
backQuote = !backQuote
|
backQuote = !backQuote
|
||||||
}
|
}
|
||||||
|
case ')':
|
||||||
|
if !singleQuoted && !doubleQuoted && !backQuote {
|
||||||
|
if p.ParseBacktick {
|
||||||
|
if dollarQuote {
|
||||||
|
out, err := shellRun(backtick, p.Dir)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
buf = buf[:len(buf)-len(backtick)-2] + out
|
||||||
|
}
|
||||||
|
backtick = ""
|
||||||
|
dollarQuote = !dollarQuote
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
backtick = ""
|
||||||
|
dollarQuote = !dollarQuote
|
||||||
|
}
|
||||||
|
case '(':
|
||||||
|
if !singleQuoted && !doubleQuoted && !backQuote {
|
||||||
|
if !dollarQuote && strings.HasSuffix(buf, "$") {
|
||||||
|
dollarQuote = true
|
||||||
|
buf += "("
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("invalid command line string")
|
||||||
|
}
|
||||||
|
}
|
||||||
case '"':
|
case '"':
|
||||||
if !singleQuoted {
|
if !singleQuoted && !dollarQuote {
|
||||||
|
if doubleQuoted {
|
||||||
|
got = argQuoted
|
||||||
|
}
|
||||||
doubleQuoted = !doubleQuoted
|
doubleQuoted = !doubleQuoted
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
case '\'':
|
case '\'':
|
||||||
if !doubleQuoted {
|
if !doubleQuoted && !dollarQuote {
|
||||||
|
if singleQuoted {
|
||||||
|
got = argSingle
|
||||||
|
}
|
||||||
singleQuoted = !singleQuoted
|
singleQuoted = !singleQuoted
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
case ';', '&', '|', '<', '>':
|
case ';', '&', '|', '<', '>':
|
||||||
if !(escaped || singleQuoted || doubleQuoted || backQuote) {
|
if !(escaped || singleQuoted || doubleQuoted || backQuote || dollarQuote) {
|
||||||
|
if r == '>' && len(buf) > 0 {
|
||||||
|
if c := buf[0]; '0' <= c && c <= '9' {
|
||||||
|
i -= 1
|
||||||
|
got = argNo
|
||||||
|
}
|
||||||
|
}
|
||||||
pos = i
|
pos = i
|
||||||
break loop
|
break loop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
got = true
|
got = argSingle
|
||||||
buf += string(r)
|
buf += string(r)
|
||||||
if backQuote {
|
if backQuote || dollarQuote {
|
||||||
backtick += string(r)
|
backtick += string(r)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if got {
|
if got != argNo {
|
||||||
if p.ParseEnv {
|
if p.ParseEnv {
|
||||||
buf = replaceEnv(buf)
|
if got == argSingle {
|
||||||
|
parser := &Parser{ParseEnv: false, ParseBacktick: false, Position: 0, Dir: p.Dir}
|
||||||
|
strs, err := parser.Parse(replaceEnv(p.Getenv, buf))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
args = append(args, strs...)
|
||||||
|
} else {
|
||||||
|
args = append(args, replaceEnv(p.Getenv, buf))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
args = append(args, buf)
|
||||||
}
|
}
|
||||||
args = append(args, buf)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if escaped || singleQuoted || doubleQuoted || backQuote {
|
if escaped || singleQuoted || doubleQuoted || backQuote || dollarQuote {
|
||||||
return nil, errors.New("invalid command line string")
|
return nil, errors.New("invalid command line string")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,6 +283,35 @@ loop:
|
|||||||
return args, nil
|
return args, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Parser) ParseWithEnvs(line string) (envs []string, args []string, err error) {
|
||||||
|
_args, err := p.Parse(line)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
envs = []string{}
|
||||||
|
args = []string{}
|
||||||
|
parsingEnv := true
|
||||||
|
for _, arg := range _args {
|
||||||
|
if parsingEnv && isEnv(arg) {
|
||||||
|
envs = append(envs, arg)
|
||||||
|
} else {
|
||||||
|
if parsingEnv {
|
||||||
|
parsingEnv = false
|
||||||
|
}
|
||||||
|
args = append(args, arg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return envs, args, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func isEnv(arg string) bool {
|
||||||
|
return len(strings.Split(arg, "=")) == 2
|
||||||
|
}
|
||||||
|
|
||||||
func Parse(line string) ([]string, error) {
|
func Parse(line string) ([]string, error) {
|
||||||
return NewParser().Parse(line)
|
return NewParser().Parse(line)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ParseWithEnvs(line string) (envs []string, args []string, err error) {
|
||||||
|
return NewParser().ParseWithEnvs(line)
|
||||||
|
}
|
||||||
|
20
vendor/github.com/mattn/go-shellwords/util_posix.go
generated
vendored
20
vendor/github.com/mattn/go-shellwords/util_posix.go
generated
vendored
@ -3,17 +3,27 @@
|
|||||||
package shellwords
|
package shellwords
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func shellRun(line string) (string, error) {
|
func shellRun(line, dir string) (string, error) {
|
||||||
shell := os.Getenv("SHELL")
|
var shell string
|
||||||
b, err := exec.Command(shell, "-c", line).Output()
|
if shell = os.Getenv("SHELL"); shell == "" {
|
||||||
|
shell = "/bin/sh"
|
||||||
|
}
|
||||||
|
cmd := exec.Command(shell, "-c", line)
|
||||||
|
if dir != "" {
|
||||||
|
cmd.Dir = dir
|
||||||
|
}
|
||||||
|
b, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.New(err.Error() + ":" + string(b))
|
if eerr, ok := err.(*exec.ExitError); ok {
|
||||||
|
b = eerr.Stderr
|
||||||
|
}
|
||||||
|
return "", fmt.Errorf("%s: %w", string(b), err)
|
||||||
}
|
}
|
||||||
return strings.TrimSpace(string(b)), nil
|
return strings.TrimSpace(string(b)), nil
|
||||||
}
|
}
|
||||||
|
22
vendor/github.com/mattn/go-shellwords/util_windows.go
generated
vendored
22
vendor/github.com/mattn/go-shellwords/util_windows.go
generated
vendored
@ -1,17 +1,29 @@
|
|||||||
|
// +build windows
|
||||||
|
|
||||||
package shellwords
|
package shellwords
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func shellRun(line string) (string, error) {
|
func shellRun(line, dir string) (string, error) {
|
||||||
shell := os.Getenv("COMSPEC")
|
var shell string
|
||||||
b, err := exec.Command(shell, "/c", line).Output()
|
if shell = os.Getenv("COMSPEC"); shell == "" {
|
||||||
|
shell = "cmd"
|
||||||
|
}
|
||||||
|
cmd := exec.Command(shell, "/c", line)
|
||||||
|
if dir != "" {
|
||||||
|
cmd.Dir = dir
|
||||||
|
}
|
||||||
|
b, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.New(err.Error() + ":" + string(b))
|
if eerr, ok := err.(*exec.ExitError); ok {
|
||||||
|
b = eerr.Stderr
|
||||||
|
}
|
||||||
|
return "", fmt.Errorf("%s: %w", string(b), err)
|
||||||
}
|
}
|
||||||
return strings.TrimSpace(string(b)), nil
|
return strings.TrimSpace(string(b)), nil
|
||||||
}
|
}
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -68,7 +68,7 @@ github.com/godbus/dbus
|
|||||||
# github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56
|
# github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56
|
||||||
## explicit
|
## explicit
|
||||||
github.com/j-keck/arping
|
github.com/j-keck/arping
|
||||||
# github.com/mattn/go-shellwords v1.0.3
|
# github.com/mattn/go-shellwords v1.0.11
|
||||||
## explicit
|
## explicit
|
||||||
github.com/mattn/go-shellwords
|
github.com/mattn/go-shellwords
|
||||||
# github.com/nxadm/tail v1.4.4
|
# github.com/nxadm/tail v1.4.4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user