From 391bbbea350c0f809e3957fab3189d1ab6930894 Mon Sep 17 00:00:00 2001 From: Lars Trieloff <trieloff@adobe.com> Date: Wed, 13 Dec 2017 11:02:21 +0000 Subject: [PATCH] Use -x command line option, introduce new schemaDir parameter #12 --- cli.js | 5 +++-- lib/schema.js | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/cli.js b/cli.js index e388ff6..102de8d 100644 --- a/cli.js +++ b/cli.js @@ -49,6 +49,7 @@ var schemaPathMap = {}; var metaElements = {}; var schemaPath = path.resolve(argv.d); var outDir = path.resolve(argv.o); +var schemaDir = argv.x ? path.resolve(argv.x) : outDir; var target = fs.statSync(schemaPath); if (argv.s){ @@ -86,7 +87,7 @@ if (target.isDirectory()) { return Promise.reduce(files, readSchemaFile, schemaPathMap) .then((schemaMap)=>{ logger.info('finished reading all *.schema.json files in %s, beginning processing....', schemaPath); - return Schema.load(schemaMap, schemaPath, outDir, metaElements); + return Schema.load(schemaMap, schemaPath, outDir, schemaDir, metaElements); }) .then(() => { logger.info('Processing complete.'); @@ -107,7 +108,7 @@ if (target.isDirectory()) { Schema.setAjv(ajv); Schema.setSchemaPathMap(schemaPathMap); logger.info('finished reading %s, beginning processing....', schemaPath); - return Schema.load(schemaMap , schemaPath, outDir, metaElements); + return Schema.load(schemaMap , schemaPath, outDir, schemaDir, metaElements); }) .then(() => { logger.info('Processing complete.'); diff --git a/lib/schema.js b/lib/schema.js index a9309db..a36ac3e 100644 --- a/lib/schema.js +++ b/lib/schema.js @@ -381,8 +381,16 @@ Schema.setAjv=function(ajv){ Schema.setSchemaPathMap=function(schemaMap){ this._schemaPathMap=schemaMap; }; - -Schema.load = function(schemaMap,schemaPath,outDir,metaElements){ +/** + * Loads a schema file for processing into a given target directory + * @param {*} schemaMap + * @param {*} schemaPath + * @param {string} docDir - where documentation will be generated + * @param {string} schemaDir - where schemas will be generated, if null, `docDir` will be used + * @param {*} metaElements + */ +Schema.load = function(schemaMap, schemaPath, docDir, schemaDir, metaElements) { + schemaDir = schemaDir ? schemaDir : docDir; smap=schemaMap; let keys = Object.keys(schemaMap); return Promise.mapSeries(keys,(schemaKey) => { @@ -408,8 +416,8 @@ Schema.load = function(schemaMap,schemaPath,outDir,metaElements){ return { mSchema:mSchema,wSchema:allSchema,dep:wmap }; }); }).then((object)=>{ - return Promise.all([ Writer.generateMarkdown(schemaMap[schemaKey].filePath,object.mSchema,schemaPath,outDir,object.dep), - Writer.generateNewSchemaFiles(schemaMap[schemaKey].filePath,object.wSchema,schemaPath,outDir) ]); + return Promise.all([ Writer.generateMarkdown(schemaMap[schemaKey].filePath,object.mSchema,schemaPath,docDir,object.dep), + Writer.generateNewSchemaFiles(schemaMap[schemaKey].filePath,object.wSchema,schemaPath,schemaDir) ]); }); // }) -- GitLab