tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

copySchemaFiles.mjs (1529B)


      1 /**
      2 * @license
      3 * Copyright 2022 Google Inc.
      4 * SPDX-License-Identifier: Apache-2.0
      5 */
      6 
      7 import fs from 'fs/promises';
      8 import path from 'path';
      9 import url from 'url';
     10 
     11 const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
     12 
     13 /**
     14 *
     15 * @param {String} directory
     16 * @param {String[]} files
     17 */
     18 async function findSchemaFiles(directory, files = []) {
     19  const items = await fs.readdir(directory);
     20  const promises = [];
     21  // Match any listing that has no *.* format
     22  // Ignore files folder
     23  const regEx = /^.*\.[^\s]*$/;
     24 
     25  items.forEach(item => {
     26    if (!item.match(regEx)) {
     27      promises.push(findSchemaFiles(`${directory}/${item}`, files));
     28    } else if (item.endsWith('.json') || directory.includes('files')) {
     29      files.push(`${directory}/${item}`);
     30    }
     31  });
     32 
     33  await Promise.all(promises);
     34 
     35  return files;
     36 }
     37 
     38 async function copySchemaFiles() {
     39  const srcDir = path.join(__dirname, '..', 'src');
     40  const outputDir = path.join(__dirname, '..', 'lib');
     41  const files = await findSchemaFiles(srcDir);
     42 
     43  const moves = files.map(file => {
     44    const to = file.replace(srcDir, outputDir);
     45 
     46    return {from: file, to};
     47  });
     48 
     49  // Because fs.cp is Experimental (recursive support)
     50  // We need to create directories first and copy the files
     51  await Promise.all(
     52    moves.map(({to}) => {
     53      const dir = path.dirname(to);
     54      return fs.mkdir(dir, {recursive: true});
     55    }),
     56  );
     57  await Promise.all(
     58    moves.map(({from, to}) => {
     59      return fs.copyFile(from, to);
     60    }),
     61  );
     62 }
     63 
     64 copySchemaFiles();