UNPKG

secure-scan-js

Version:

A JavaScript implementation of Yelp's detect-secrets tool - no Python required

80 lines (64 loc) 2.15 kB
#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); const chalk = require('chalk'); // Paths const ROOT_DIR = path.resolve(__dirname, '..'); const DIST_DIR = path.join(ROOT_DIR, 'dist'); const PYTHON_DIR = path.join(ROOT_DIR, 'src', 'python'); const DEST_PYTHON_DIR = path.join(DIST_DIR, 'python'); // Ensure directories exist function ensureDir(dir) { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); console.log(chalk.green(`Created directory: ${dir}`)); } } // Copy directory recursively function copyDir(src, dest) { ensureDir(dest); const entries = fs.readdirSync(src, { withFileTypes: true }); for (const entry of entries) { const srcPath = path.join(src, entry.name); const destPath = path.join(dest, entry.name); if (entry.isDirectory()) { copyDir(srcPath, destPath); } else { fs.copyFileSync(srcPath, destPath); } } console.log(chalk.green(`Copied directory: ${src} -> ${dest}`)); } // Main build function function build() { console.log(chalk.blue('Starting build process...')); try { // Clean dist directory if (fs.existsSync(DIST_DIR)) { fs.rmSync(DIST_DIR, { recursive: true, force: true }); console.log(chalk.yellow('Cleaned dist directory')); } // Create necessary directories ensureDir(DIST_DIR); ensureDir(DEST_PYTHON_DIR); // Run TypeScript compilation console.log(chalk.blue('Compiling TypeScript...')); execSync('npx tsc', { cwd: ROOT_DIR, stdio: 'inherit' }); // Copy Python files console.log(chalk.blue('Copying Python files...')); copyDir(PYTHON_DIR, DEST_PYTHON_DIR); // Make CLI executable const cliPath = path.join(ROOT_DIR, 'bin', 'cli.js'); if (fs.existsSync(cliPath)) { fs.chmodSync(cliPath, '755'); console.log(chalk.green('Made CLI executable')); } console.log(chalk.green('Build completed successfully!')); } catch (error) { console.error(chalk.red('Build failed:'), error); process.exit(1); } } // Run the build build();