UNPKG

@graphql-inspector/commands

Version:
48 lines (47 loc) 1.58 kB
import { isAbsolute, resolve } from 'path'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; export function useCommands(api) { return api.config.commands.map(name => loadCommand(name)(api)); } export function createCommand(factory) { return factory; } function loadCommand(name) { const mod = require(`@graphql-inspector/${name}-command`); return mod.default || mod; } export function ensureAbsolute(filepath, basepath = process.cwd()) { return isAbsolute(filepath) ? filepath : resolve(basepath, filepath); } export function parseGlobalArgs(args) { const headers = {}; const leftHeaders = {}; const rightHeaders = {}; if (args.header) { for (const header of args.header) { const [name, ...values] = header.split(':'); headers[name] = values.join(''); } } if (args.leftHeader) { for (const leftHeader of args.leftHeader) { const [lname, ...lvalues] = leftHeader.split(':'); leftHeaders[lname] = lvalues.join(''); } } if (args.rightHeader) { for (const rightHeader of args.rightHeader) { const [rname, ...rvalues] = rightHeader.split(':'); rightHeaders[rname] = rvalues.join(''); } } if (args.require) { for (const mod of args.require) require(mod); } return { headers, leftHeaders, rightHeaders, token: args.token }; } export function mockCommand(mod, cmd) { return yargs(hideBin(process.argv)).command(mod).exitProcess(false).parseAsync(cmd); }