secure-scan-js
Version:
A JavaScript implementation of Yelp's detect-secrets tool - no Python required
80 lines (64 loc) • 2.15 kB
JavaScript
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();