graphql-cli
Version:
Command line tool for common GraphQL development workflows
49 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cli = void 0;
const tslib_1 = require("tslib");
const yargs_1 = tslib_1.__importDefault(require("yargs"));
const globby_1 = tslib_1.__importDefault(require("globby"));
const path_1 = require("path");
const common_1 = require("@graphql-cli/common");
const discover_1 = tslib_1.__importDefault(require("./discover"));
async function cli() {
const program = yargs_1.default
.scriptName('graphql')
.detectLocale(false)
.epilog('Visit https://github.com/Urigo/graphql-cli for more information')
.version();
const commandPackageNames = await discoverCommands();
const commandFactories = await Promise.all(commandPackageNames.map(loadCommand));
[discover_1.default, ...commandFactories].forEach((cmd) => {
program.command(cmd({
useConfig: common_1.useConfig,
useLoaders: common_1.useLoaders,
}));
});
program.demandCommand().recommendCommands().help().showHelpOnFail(false).argv;
}
exports.cli = cli;
async function discoverCommands() {
const commandNames = [];
const paths = require.resolve.paths('graphql-cli');
await Promise.all(paths.map(findInDirectory));
async function findInDirectory(directory) {
const results = await globby_1.default('*', {
cwd: path_1.join(directory, '@graphql-cli'),
onlyDirectories: true,
deep: 1,
ignore: ['common', 'loaders'],
});
if (results.length) {
commandNames.push(...results);
}
}
// unique names
return commandNames.filter((val, i, list) => list.indexOf(val) === i);
}
function loadCommand(name) {
const mod = require(`@graphql-cli/${name}`);
return mod.default || mod;
}
//# sourceMappingURL=index.js.map