| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- declare namespace parse {
- /** A shell control operator. */
- export interface ControlOperator {
- op: '||' | '&&' | ';;' | '|&' | '<(' | '<<<' | '>>' | '>&' | '<&' | '&' | ';' | '(' | ')' | '|' | '<' | '>';
- }
- /** A glob pattern parsed from the shell command. */
- export interface GlobPattern {
- op: 'glob';
- pattern: string;
- }
- /** A shell comment. */
- export interface Comment {
- comment: string;
- }
- /** A parsed token returned by {@link parse}. */
- export type ParseEntry = string | ControlOperator | GlobPattern | Comment;
- /** Options for the {@link parse} function. */
- export interface ParseOptions {
- /** Custom escape character. Defaults to `\\`. */
- escape?: string;
- /** Field-splits an unquoted variable expansion, the way a shell does using `IFS`; quoted expansions are never split. `true` uses the default IFS (space, tab, newline); a string uses its characters as the IFS. An empty string, `false`, or omitting the option disables splitting. Defaults to false. */
- splitUnquoted?: boolean | string;
- }
- export type Env =
- | Record<string, string | undefined>
- | ((key: string) => string | object | undefined);
- }
- /**
- * Parses a shell command string into an array of tokens.
- *
- * @param s - The shell command string to parse.
- * @param env - Optional environment variables for expansion, either as an object of string values or a lookup function. When the lookup function returns an object, that object is inserted into the result verbatim.
- * @param opts - Optional parsing options.
- * @returns An array of parsed tokens, including any objects returned by an `env` lookup function.
- */
- declare function parse<T extends string | object = never>(
- s: string,
- env?: parse.Env,
- opts?: parse.ParseOptions,
- ): (parse.ParseEntry | T)[];
- export = parse;
|