1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
diff --git a/app/msgviewer.go b/app/msgviewer.go
index 8ac22bcccbd8261120e102bbe88c3091fc2cf7e9..abed93fdb776cab09e3f00a7fa67a533f423525a 100644
--- a/app/msgviewer.go
+++ b/app/msgviewer.go
@@ -13,7 +13,6 @@
"github.com/danwakefield/fnmatch"
"github.com/emersion/go-message/textproto"
"github.com/gdamore/tcell/v2"
- "github.com/google/shlex"
"github.com/mattn/go-runewidth"
"git.sr.ht/~rjarry/aerc/config"
@@ -24,6 +23,7 @@ "git.sr.ht/~rjarry/aerc/lib/parse"
"git.sr.ht/~rjarry/aerc/lib/ui"
"git.sr.ht/~rjarry/aerc/log"
"git.sr.ht/~rjarry/aerc/models"
+ "git.sr.ht/~rjarry/go-opt"
)
var _ ProvidesMessages = (*MessageViewer)(nil)
@@ -431,11 +431,7 @@ if err != nil {
acct.PushError(fmt.Errorf("could not start pager: %w", err))
return nil, err
}
- cmd, err := shlex.Split(pagerCmd)
- if err != nil {
- return nil, err
- }
-
+ cmd := opt.SplitArgs(pagerCmd)
pager = exec.Command(cmd[0], cmd[1:]...)
info := msg.MessageInfo()
diff --git a/commands/compose/send.go b/commands/compose/send.go
index 6f90562841cbdd6e39cc0c66601809fb0df05612..1047ebade7c27ca0ed9e2d1627ff68babd44539b 100644
--- a/commands/compose/send.go
+++ b/commands/compose/send.go
@@ -12,7 +12,6 @@ "time"
"github.com/emersion/go-sasl"
"github.com/emersion/go-smtp"
- "github.com/google/shlex"
"github.com/pkg/errors"
"git.sr.ht/~rjarry/aerc/app"
@@ -23,6 +22,7 @@ "git.sr.ht/~rjarry/aerc/lib"
"git.sr.ht/~rjarry/aerc/log"
"git.sr.ht/~rjarry/aerc/models"
"git.sr.ht/~rjarry/aerc/worker/types"
+ "git.sr.ht/~rjarry/go-opt"
"github.com/emersion/go-message/mail"
"golang.org/x/oauth2"
)
@@ -271,10 +271,7 @@ archive string
}
func newSendmailSender(ctx sendCtx) (io.WriteCloser, error) {
- args, err := shlex.Split(ctx.uri.Path)
- if err != nil {
- return nil, err
- }
+ args := opt.SplitArgs(ctx.uri.Path)
if len(args) == 0 {
return nil, fmt.Errorf("no command specified")
}
@@ -286,6 +283,7 @@ }
args = append(args[1:], rs...)
cmd := exec.Command(bin, args...)
s := &sendmailSender{cmd: cmd}
+ var err error
s.stdin, err = s.cmd.StdinPipe()
if err != nil {
return nil, errors.Wrap(err, "cmd.StdinPipe")
diff --git a/completer/completer.go b/completer/completer.go
index 9b237fa8d41969a4bbf62e063eeb5651114f79ad..647e9ed7885e2abb3aae5b41acca302630afc893 100644
--- a/completer/completer.go
+++ b/completer/completer.go
@@ -13,7 +13,7 @@ "strings"
"syscall"
"git.sr.ht/~rjarry/aerc/log"
- "github.com/google/shlex"
+ "git.sr.ht/~rjarry/go-opt"
)
// A Completer is used to autocomplete text inputs based on the configured
@@ -142,10 +142,7 @@ if strings.TrimSpace(c.AddressBookCmd) == "" {
return nil, fmt.Errorf("no command configured")
}
queryCmd := strings.ReplaceAll(c.AddressBookCmd, "%s", s)
- parts, err := shlex.Split(queryCmd)
- if err != nil {
- return nil, fmt.Errorf("could not lex command")
- }
+ parts := opt.SplitArgs(queryCmd)
if len(parts) < 1 {
return nil, fmt.Errorf("empty command")
}
diff --git a/go.mod b/go.mod
index 6705dffcb89b5b082e8c96680cc34d557f81230c..2d00658445bedce20ae17e17ecdd60c97a37440f 100644
--- a/go.mod
+++ b/go.mod
@@ -23,7 +23,6 @@ github.com/fsnotify/fsnotify v1.6.0
github.com/gatherstars-com/jwz v1.4.0
github.com/gdamore/tcell/v2 v2.6.0
github.com/go-ini/ini v1.67.0
- github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/lithammer/fuzzysearch v1.1.5
github.com/mattn/go-isatty v0.0.18
github.com/mattn/go-runewidth v0.0.14
diff --git a/go.sum b/go.sum
index a22537893d9d86652a6ac795067c110e2ed93e10..f8aec3ec88754d2e0405fb392b3d712bd1c61604 100644
--- a/go.sum
+++ b/go.sum
@@ -82,8 +82,6 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/jaytaylor/html2text v0.0.0-20200412013138-3577fbdbcff7/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk=
|