summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js')
-rw-r--r--remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js b/remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js
new file mode 100644
index 0000000000..bca61b8101
--- /dev/null
+++ b/remote/test/puppeteer/packages/ng-schematics/tools/copySchemaFiles.js
@@ -0,0 +1,72 @@
+/**
+ * Copyright 2022 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const fs = require('fs/promises');
+const {join} = require('path');
+const path = require('path');
+
+/**
+ *
+ * @param {String} directory
+ * @param {String[]} files
+ */
+async function findSchemaFiles(directory, files = []) {
+ const items = await fs.readdir(directory);
+ const promises = [];
+ // Match any listing that has no *.* format
+ // Ignore files folder
+ const regEx = /^.*\.[^\s]*$/;
+
+ items.forEach(item => {
+ if (!item.match(regEx)) {
+ promises.push(findSchemaFiles(`${directory}/${item}`, files));
+ } else if (item.endsWith('.json') || directory.includes('files')) {
+ files.push(`${directory}/${item}`);
+ }
+ });
+
+ await Promise.all(promises);
+
+ return files;
+}
+
+async function copySchemaFiles() {
+ const srcDir = join(__dirname, '..', 'src');
+ const outputDir = join(__dirname, '..', 'lib');
+ const files = await findSchemaFiles(srcDir);
+
+ const moves = files.map(file => {
+ const to = file.replace(srcDir, outputDir);
+
+ return {from: file, to};
+ });
+
+ // Because fs.cp is Experimental (recursive support)
+ // We need to create directories first and copy the files
+ await Promise.all(
+ moves.map(({to}) => {
+ const dir = path.dirname(to);
+ return fs.mkdir(dir, {recursive: true});
+ })
+ );
+ await Promise.all(
+ moves.map(({from, to}) => {
+ return fs.copyFile(from, to);
+ })
+ );
+}
+
+copySchemaFiles();