@graphql-codegen/cli
Version:
<p align="center"> <img src="https://github.com/dotansimha/graphql-code-generator/blob/master/logo.png?raw=true" /> </p>
65 lines (64 loc) • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.italic = exports.grey = exports.bold = exports.writePackage = exports.writeConfig = void 0;
const tslib_1 = require("tslib");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const path_1 = require("path");
const fs_1 = require("fs");
const detect_indent_1 = tslib_1.__importDefault(require("detect-indent"));
const get_latest_version_js_1 = require("../utils/get-latest-version.js");
// Parses config and writes it to a file
async function writeConfig(answers, config) {
const YAML = await Promise.resolve().then(() => tslib_1.__importStar(require('json-to-pretty-yaml'))).then(m => ('default' in m ? m.default : m));
const ext = answers.config.toLocaleLowerCase().endsWith('.json') ? 'json' : 'yml';
const content = ext === 'json' ? JSON.stringify(config) : YAML.stringify(config);
const fullPath = (0, path_1.resolve)(process.cwd(), answers.config);
const relativePath = (0, path_1.relative)(process.cwd(), answers.config);
(0, fs_1.writeFileSync)(fullPath, content, {
encoding: 'utf-8',
});
return {
relativePath,
fullPath,
};
}
exports.writeConfig = writeConfig;
// Updates package.json (script and plugins as dependencies)
async function writePackage(answers, configLocation) {
// script
const pkgPath = (0, path_1.resolve)(process.cwd(), 'package.json');
const pkgContent = (0, fs_1.readFileSync)(pkgPath, {
encoding: 'utf-8',
});
const pkg = JSON.parse(pkgContent);
const { indent } = (0, detect_indent_1.default)(pkgContent);
if (!pkg.scripts) {
pkg.scripts = {};
}
pkg.scripts[answers.script] = `graphql-codegen --config ${configLocation}`;
// plugin
if (!pkg.devDependencies) {
pkg.devDependencies = {};
}
await Promise.all(answers.plugins.map(async (plugin) => {
pkg.devDependencies[plugin.package] = await (0, get_latest_version_js_1.getLatestVersion)(plugin.package);
}));
if (answers.introspection) {
pkg.devDependencies['@graphql-codegen/introspection'] = await (0, get_latest_version_js_1.getLatestVersion)('@graphql-codegen/introspection');
}
pkg.devDependencies['@graphql-codegen/cli'] = await (0, get_latest_version_js_1.getLatestVersion)('@graphql-codegen/cli');
(0, fs_1.writeFileSync)(pkgPath, JSON.stringify(pkg, null, indent));
}
exports.writePackage = writePackage;
function bold(str) {
return chalk_1.default.bold(str);
}
exports.bold = bold;
function grey(str) {
return chalk_1.default.grey(str);
}
exports.grey = grey;
function italic(str) {
return chalk_1.default.italic(str);
}
exports.italic = italic;