diff options
Diffstat (limited to 'node_modules/yaml/dist/cli.mjs')
| -rw-r--r-- | node_modules/yaml/dist/cli.mjs | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/node_modules/yaml/dist/cli.mjs b/node_modules/yaml/dist/cli.mjs deleted file mode 100644 index d3c7d43e..00000000 --- a/node_modules/yaml/dist/cli.mjs +++ /dev/null @@ -1,199 +0,0 @@ -import { resolve } from 'node:path'; -import { parseArgs } from 'node:util'; -import { prettyToken } from './parse/cst.js'; -import { Lexer } from './parse/lexer.js'; -import { Parser } from './parse/parser.js'; -import { Composer } from './compose/composer.js'; -import { LineCounter } from './parse/line-counter.js'; -import { prettifyError } from './errors.js'; -import { visit } from './visit.js'; - -const help = `\ -yaml: A command-line YAML processor and inspector - -Reads stdin and writes output to stdout and errors & warnings to stderr. - -Usage: - yaml Process a YAML stream, outputting it as YAML - yaml cst Parse the CST of a YAML stream - yaml lex Parse the lexical tokens of a YAML stream - yaml valid Validate a YAML stream, returning 0 on success - -Options: - --help, -h Show this message. - --json, -j Output JSON. - --indent 2 Output pretty-printed data, indented by the given number of spaces. - -Additional options for bare "yaml" command: - --doc, -d Output pretty-printed JS Document objects. - --single, -1 Require the input to consist of a single YAML document. - --strict, -s Stop on errors. - --visit, -v Apply a visitor to each document (requires a path to import) - --yaml 1.1 Set the YAML version. (default: 1.2)`; -class UserError extends Error { - constructor(code, message) { - super(`Error: ${message}`); - this.code = code; - } -} -UserError.ARGS = 2; -UserError.SINGLE = 3; -async function cli(stdin, done, argv) { - let args; - try { - args = parseArgs({ - args: argv, - allowPositionals: true, - options: { - doc: { type: 'boolean', short: 'd' }, - help: { type: 'boolean', short: 'h' }, - indent: { type: 'string', short: 'i' }, - json: { type: 'boolean', short: 'j' }, - single: { type: 'boolean', short: '1' }, - strict: { type: 'boolean', short: 's' }, - visit: { type: 'string', short: 'v' }, - yaml: { type: 'string', default: '1.2' } - } - }); - } - catch (error) { - return done(new UserError(UserError.ARGS, error.message)); - } - const { positionals: [mode], values: opt } = args; - let indent = Number(opt.indent); - stdin.setEncoding('utf-8'); - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - switch (opt.help || mode) { - /* istanbul ignore next */ - case true: // --help - console.log(help); - break; - case 'lex': { - const lexer = new Lexer(); - const data = []; - const add = (tok) => { - if (opt.json) - data.push(tok); - else - console.log(prettyToken(tok)); - }; - stdin.on('data', (chunk) => { - for (const tok of lexer.lex(chunk, true)) - add(tok); - }); - stdin.on('end', () => { - for (const tok of lexer.lex('', false)) - add(tok); - if (opt.json) - console.log(JSON.stringify(data, null, indent)); - done(); - }); - break; - } - case 'cst': { - const parser = new Parser(); - const data = []; - const add = (tok) => { - if (opt.json) - data.push(tok); - else - console.dir(tok, { depth: null }); - }; - stdin.on('data', (chunk) => { - for (const tok of parser.parse(chunk, true)) - add(tok); - }); - stdin.on('end', () => { - for (const tok of parser.parse('', false)) - add(tok); - if (opt.json) - console.log(JSON.stringify(data, null, indent)); - done(); - }); - break; - } - case undefined: - case 'valid': { - const lineCounter = new LineCounter(); - const parser = new Parser(lineCounter.addNewLine); - // @ts-expect-error Version is validated at runtime - const composer = new Composer({ version: opt.yaml }); - const visitor = opt.visit - ? (await import(resolve(opt.visit))).default - : null; - let source = ''; - let hasDoc = false; - let reqDocEnd = false; - const data = []; - const add = (doc) => { - if (hasDoc && opt.single) { - return done(new UserError(UserError.SINGLE, 'Input stream contains multiple documents')); - } - for (const error of doc.errors) { - prettifyError(source, lineCounter)(error); - if (opt.strict || mode === 'valid') - return done(error); - console.error(error); - } - for (const warning of doc.warnings) { - prettifyError(source, lineCounter)(warning); - console.error(warning); - } - if (visitor) - visit(doc, visitor); - if (mode === 'valid') - doc.toJS(); - else if (opt.json) - data.push(doc); - else if (opt.doc) { - Object.defineProperties(doc, { - options: { enumerable: false }, - schema: { enumerable: false } - }); - console.dir(doc, { depth: null }); - } - else { - if (reqDocEnd) - console.log('...'); - try { - indent || (indent = 2); - const str = doc.toString({ indent }); - console.log(str.endsWith('\n') ? str.slice(0, -1) : str); - } - catch (error) { - done(error); - } - } - hasDoc = true; - reqDocEnd = !doc.directives?.docEnd; - }; - stdin.on('data', (chunk) => { - source += chunk; - for (const tok of parser.parse(chunk, true)) { - for (const doc of composer.next(tok)) - add(doc); - } - }); - stdin.on('end', () => { - for (const tok of parser.parse('', false)) { - for (const doc of composer.next(tok)) - add(doc); - } - for (const doc of composer.end(false)) - add(doc); - if (opt.single && !hasDoc) { - return done(new UserError(UserError.SINGLE, 'Input stream contained no documents')); - } - if (mode !== 'valid' && opt.json) { - console.log(JSON.stringify(opt.single ? data[0] : data, null, indent)); - } - done(); - }); - break; - } - default: - done(new UserError(UserError.ARGS, `Unknown command: ${JSON.stringify(mode)}`)); - } -} - -export { UserError, cli, help }; |
