aboutsummaryrefslogtreecommitdiff
path: root/statement.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-10-07 16:03:09 +0700
committerShulhan <ms@kilabit.info>2023-10-07 16:03:09 +0700
commit27a0a85d657d139b73e61d48a38628a6e3b682ed (patch)
treebed2a8bf4f8adde6f4dd26d0b148ad388ae5b4eb /statement.go
parent1951152c8dedda62f6a7b00f9b1bedfc427482c6 (diff)
downloadawwan-27a0a85d657d139b73e61d48a38628a6e3b682ed.tar.xz
all: simplify parsing statement for magic command "#put"
This changes minimize code duplication when parsing magic command between "#put:" and "#put!" using single function parseStatementGetPut. In the returned Statement, we changes where to store the source argument into args[0] instead of in cmd for better readability and minimize confusion in Copy/SudoCopy.
Diffstat (limited to 'statement.go')
-rw-r--r--statement.go24
1 files changed, 6 insertions, 18 deletions
diff --git a/statement.go b/statement.go
index 4b8b1a2..e8199b6 100644
--- a/statement.go
+++ b/statement.go
@@ -64,15 +64,9 @@ func ParseStatement(raw []byte) (stmt *Statement, err error) {
}
if bytes.HasPrefix(raw, cmdMagicPut) {
raw = raw[len(cmdMagicPut):]
- cmd, args = libexec.ParseCommandArgs(string(raw))
- if len(cmd) == 0 || len(args) == 0 {
- return nil, fmt.Errorf("%s: %s missing argument", logp, cmdMagicPut)
- }
- stmt = &Statement{
- kind: statementKindPut,
- cmd: cmd,
- args: args,
- raw: raw,
+ stmt, err = parseStatementGetPut(statementKindPut, raw)
+ if err != nil {
+ return nil, fmt.Errorf(`%s: %q: %w`, logp, cmdMagicPut, err)
}
return stmt, nil
}
@@ -86,15 +80,9 @@ func ParseStatement(raw []byte) (stmt *Statement, err error) {
}
if bytes.HasPrefix(raw, cmdMagicSudoPut) {
raw = raw[len(cmdMagicSudoPut):]
- cmd, args = libexec.ParseCommandArgs(string(raw))
- if len(cmd) == 0 || len(args) == 0 {
- return nil, fmt.Errorf("%s: %s missing argument", logp, cmdMagicSudoPut)
- }
- stmt = &Statement{
- kind: statementKindSudoPut,
- cmd: cmd,
- args: args,
- raw: raw,
+ stmt, err = parseStatementGetPut(statementKindSudoPut, raw)
+ if err != nil {
+ return nil, fmt.Errorf(`%s: %q: %w`, logp, cmdMagicSudoPut, err)
}
return stmt, nil
}