graphqldoc
Version:
Generate GraphQL docs from schema.
57 lines (56 loc) • 2.49 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
const fse = require("fs-extra");
const Bluebird = require("bluebird");
/**
* resolve
*
* transform a path relative to absolute, if relative
* path start with `graphqldoc/` return absolute path to
* plugins directory
*/
const MODULE_BASEPATH = 'graphqldoc/';
function resolve(relative) {
if (relative.slice(0, MODULE_BASEPATH.length) === MODULE_BASEPATH)
return path.resolve(__dirname, '../../', relative.slice(MODULE_BASEPATH.length));
return path.resolve(relative);
}
exports.resolve = resolve;
/**
* Execute fs.read as Promise
*/
exports.readFile = Bluebird.promisify(fs.readFile);
exports.writeFile = Bluebird.promisify(fs.writeFile);
exports.copyAll = Bluebird.promisify(fse.copy);
exports.readDir = Bluebird.promisify(fs.readdir);
exports.mkDir = Bluebird.promisify(fs.mkdir);
exports.removeBuildDirectory = Bluebird.promisify(fse.remove);
/**
* Create build directory from a templete directory
*/
function createBuildDirectory(buildDirectory, templateDirectory, assets) {
return __awaiter(this, void 0, void 0, function* () {
// read directory
const files = yield exports.readDir(templateDirectory);
yield Bluebird.all(files
// ignore *.mustache templates
.filter(file => path.extname(file) !== '.mustache')
// copy recursive
.map(file => exports.copyAll(path.resolve(templateDirectory, file), path.resolve(buildDirectory, file))));
// create assets directory
yield exports.mkDir(path.resolve(buildDirectory, 'assets'));
yield Bluebird.all(assets
.map(asset => exports.copyAll(asset, path.resolve(buildDirectory, 'assets', path.basename(asset)))));
});
}
exports.createBuildDirectory = createBuildDirectory;