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