forked from ljharb/shell-quote
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse.d.ts
44 lines (40 loc) · 1.43 KB
/
parse.d.ts
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
// export type ControlOperator = "||" | "&&" | ";;" | "|&" | "<(" | ">>" | ">&" | "&" | ";" | "(" | ")" | "|" | "<" | ">";
//
// export type ParseEntry =
// | string
// | { op: ControlOperator }
// | { op: "glob"; pattern: string }
// | { comment: string };
import { ParseEntry } from "./common-types";
export interface ParseOptions {
/**
* Custom escape character, default value is `\`
*/
escape?: string | undefined;
}
/**
* Return an array of arguments from the quoted string `cmd`.
*
* Interpolate embedded bash-style `$VARNAME` and `${VARNAME}` variables with the `env` object which like bash will replace undefined variables with `""`.
*/
export function parse(
cmd: string,
env?: { readonly [key: string]: string | undefined },
opts?: ParseOptions,
): ParseEntry[];
/**
* Return an array of arguments from the quoted string `cmd`.
*
* Interpolate embedded bash-style `$VARNAME` and `${VARNAME}` variables
* with the `env` object which like bash will replace undefined variables with `""`.
*
* @param env
* A function to perform lookups.
* When env(key) returns a string, its result will be output just like env[key] would.
* When env(key) returns an object, it will be inserted into the result array like the operator objects.
*/
export function parse<T extends object | string>(
cmd: string,
env: (key: string) => T | undefined,
opts?: ParseOptions,
): Array<ParseEntry | T>;