UNPKG

1.79 kBJavaScriptView Raw
1/*
2 * Copyright 2019 Adobe. All rights reserved.
3 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License. You may obtain a copy
5 * of the License at http://www.apache.org/licenses/LICENSE-2.0
6 *
7 * Unless required by applicable law or agreed to in writing, software distributed under
8 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9 * OF ANY KIND, either express or implied. See the License for the specific language
10 * governing permissions and limitations under the License.
11 */
12const fs = require('fs-extra');
13const path = require('path');
14const s = require('./symbols');
15
16function writeSchema({ schemadir, origindir }) {
17 const targetpath = (filename) => path.resolve(schemadir, path.relative(origindir, filename));
18
19 return (schemas) => {
20 console.log('writing schemas to', schemadir);
21
22 const realschemas = Object.values(schemas).filter((schema) => !schema[s.parent]);
23 realschemas.forEach((schema) => {
24 // console.log('writing', schema[s.filename], 'to ', targetpath(schema[s.filename]));
25 const filename = targetpath(schema[s.filename]);
26 const dirname = path.dirname(filename);
27
28 const out = fs.readJSONSync(schema[s.filename]);
29 if (schema[s.meta] && schema[s.meta].description) {
30 // copy description from external file
31 out.description = schema[s.meta].description;
32 }
33 if (schema.examples && Array.isArray(schema.examples) && schema.examples.length > 0) {
34 // copy examples from external files
35 out.examples = [...schema.examples];
36 }
37 fs.mkdirpSync(dirname);
38 fs.writeJsonSync(filename, out);
39 });
40 };
41}
42
43module.exports = { writeSchema };