UNPKG

zippycli

Version:
1 lines 7.05 kB
{"version":3,"sources":["commands/extract.ts"],"names":["flags","extract","DEFAULT_TIMEOUT","Command","jsonE","v","JSON","stringify","Extract","run","args","parse","source","format","timeout","isJSON","sources","input","_readInputFile","req","_initRequest","errors","log","i","length","_handleSource","err","error","String","c","exit","download","filename","help","char","string","description","options","default","boolean","integer","name","required"],"mappings":"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","sourcesContent":["/* eslint-disable import/no-default-export */\n\nimport {flags} from '@oclif/command';\nimport {extract} from 'zs-extract';\n\nimport {DEFAULT_TIMEOUT} from '../constants';\nimport {Command} from '../command';\nimport {IRequestFactory} from '../request';\n\n/**\n * JSON encode a variable.\n *\n * @param v Any value.\n * @returns JSON string.\n */\nconst jsonE = (v: any) => JSON.stringify(v);\n\n/**\n * Extract command.\n */\nexport class Extract extends Command {\n\t/**\n\t * Aliases.\n\t */\n\tpublic static readonly aliases = ['ex', 'e'];\n\n\t/**\n\t * Description.\n\t */\n\tpublic static readonly description = 'extract data about download';\n\n\t/**\n\t * Examples.\n\t */\n\tpublic static readonly examples = [];\n\n\t/**\n\t * Flags.\n\t */\n\tpublic static readonly flags = {\n\t\thelp: flags.help({char: 'h'}),\n\t\tformat: flags.string({\n\t\t\tchar: 'f',\n\t\t\tdescription: 'output format',\n\t\t\toptions: ['text', 'json'],\n\t\t\tdefault: 'text'\n\t\t}),\n\t\tinput: flags.boolean({\n\t\t\tchar: 'i',\n\t\t\tdescription: 'source is input file with a URL on each line'\n\t\t}),\n\t\ttimeout: flags.integer({\n\t\t\tchar: 't',\n\t\t\tdescription: 'request timeout in seconds',\n\t\t\tdefault: DEFAULT_TIMEOUT\n\t\t})\n\t};\n\n\t/**\n\t * Arguments.\n\t */\n\tpublic static readonly args = [\n\t\t{\n\t\t\tname: 'source',\n\t\t\trequired: true,\n\t\t\tdescription: 'source to extract from'\n\t\t}\n\t];\n\n\t/**\n\t * Handler.\n\t */\n\tpublic async run() {\n\t\tconst {args, flags} = this.parse(Extract);\n\t\tconst source = args.source as string;\n\t\tconst {format, timeout} = flags;\n\n\t\tconst isJSON = format === 'json';\n\t\tconst sources = flags.input\n\t\t\t? await this._readInputFile(source)\n\t\t\t: [source];\n\n\t\tconst req = this._initRequest(timeout * 1000);\n\n\t\tlet errors = false;\n\n\t\tif (isJSON) {\n\t\t\tthis.log('[');\n\t\t}\n\n\t\tfor (let i = 0; i < sources.length; i++) {\n\t\t\tconst source = sources[i];\n\t\t\tif (isJSON) {\n\t\t\t\tthis.log(' {');\n\t\t\t} else if (i) {\n\t\t\t\tthis.log('');\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tawait this._handleSource(source, req, format);\n\t\t\t} catch (err) {\n\t\t\t\terrors = true;\n\t\t\t\tconst error = String(err);\n\t\t\t\tif (isJSON) {\n\t\t\t\t\tthis.log(` \"error\": ${jsonE(error)}`);\n\t\t\t\t} else {\n\t\t\t\t\tthis.log(`error: ${error}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isJSON) {\n\t\t\t\tconst c = i + 1 === sources.length ? '' : ',';\n\t\t\t\tthis.log(` }${c}`);\n\t\t\t}\n\t\t}\n\n\t\tif (isJSON) {\n\t\t\tthis.log(']');\n\t\t}\n\n\t\tif (errors) {\n\t\t\tthis.exit(1);\n\t\t}\n\t}\n\n\t/**\n\t * Handle an individual source.\n\t *\n\t * @param source The source.\n\t * @param req Request factory.\n\t * @param format Output format.\n\t */\n\tprotected async _handleSource(\n\t\tsource: string,\n\t\treq: IRequestFactory,\n\t\tformat: string\n\t) {\n\t\tconst isJSON = format === 'json';\n\n\t\tif (isJSON) {\n\t\t\tthis.log(` \"source\": ${jsonE(source)},`);\n\t\t} else {\n\t\t\tthis.log(`source: ${source}`);\n\t\t}\n\n\t\tconst {download, filename} = await extract(source, req);\n\n\t\tif (isJSON) {\n\t\t\tthis.log(` \"download\": ${jsonE(download)},`);\n\t\t\tthis.log(` \"filename\": ${jsonE(filename)}`);\n\t\t} else {\n\t\t\tthis.log(`download: ${download}`);\n\t\t\tthis.log(`filename: ${filename || ''}`);\n\t\t}\n\t}\n}\nexport default Extract;\n"],"file":"extract.mjs","sourceRoot":"../../src"}