All files / packages/sds-subsystems/scripts copyComponentAssets.js

0% Statements 0/21
0% Branches 0/6
0% Functions 0/1
0% Lines 0/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                                                                                                                   
import fs from 'fs-extra';
import path from 'path';
import * as glob from 'glob';
import { fileURLToPath } from 'url';
 
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const root = path.resolve(__dirname, '../');
const dist = path.resolve(root, 'dist');
const componentsDist = path.resolve(dist, 'components');
 
// Ensure components directory exists
fs.ensureDirSync(componentsDist);
 
// Find all slds2 component directories
const componentDirs = glob.sync(path.resolve(root, 'src/slds2/*'), {
  onlyDirectories: true,
});
 
// Filter function to exclude underscore directories, JS files, and UIF files
const filterFunc = (src, dest) => {
  const relativePath = path.relative(path.resolve(root, 'src/slds2'), src);
  const pathParts = relativePath.split(path.sep);
 
  // Skip if any part of the path starts with underscore
  if (pathParts.some((part) => part.startsWith('__'))) {
    return false;
  }
 
  // Skip JS files
  if (path.extname(src) === '.js') {
    return false;
  }
 
  // Skip UIF files (Universal Interface Format)
  if (path.basename(src).endsWith('.uif.json')) {
    return false;
  }
 
  return true;
};
 
// Copy each component directory to dist/components/
componentDirs.forEach((componentDir) => {
  const componentName = path.basename(componentDir);
  const destDir = path.resolve(componentsDist, componentName);
 
  console.log(`Copying component: ${componentName}`);
  // Ensure destination exists before copying (handles race condition with build:uif)
  fs.ensureDirSync(destDir);
  fs.copySync(componentDir, destDir, {
    filter: filterFunc,
    overwrite: true,
  });
});
 
console.log('Component files copied to dist/components/');