diff options
| author | Shulhan <ms@kilabit.info> | 2023-10-07 16:03:09 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-10-07 16:03:09 +0700 |
| commit | 27a0a85d657d139b73e61d48a38628a6e3b682ed (patch) | |
| tree | bed2a8bf4f8adde6f4dd26d0b148ad388ae5b4eb /statement.go | |
| parent | 1951152c8dedda62f6a7b00f9b1bedfc427482c6 (diff) | |
| download | awwan-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.go | 24 |
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 } |
