UNPKG

@isiahw1/mcp-server-bing-webmaster

Version:
87 lines (74 loc) • 2.27 kB
#!/usr/bin/env node /** * Pre-publish validation script */ const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); let errors = 0; console.log('šŸ” Running pre-publish validation...\n'); // Check required files exist const requiredFiles = [ 'package.json', 'README.md', 'LICENSE', 'run.js', '.env.example', 'mcp_server_bwt/__init__.py', 'mcp_server_bwt/main.py', 'pyproject.toml' ]; console.log('šŸ“ Checking required files...'); for (const file of requiredFiles) { if (!fs.existsSync(path.join(__dirname, '..', file))) { console.error(` āŒ Missing required file: ${file}`); errors++; } else { console.log(` āœ… ${file}`); } } // Check for sensitive files console.log('\nšŸ”’ Checking for sensitive files...'); const sensitiveFiles = ['.env', 'config/local.json', 'secrets/']; for (const file of sensitiveFiles) { if (fs.existsSync(path.join(__dirname, '..', file))) { console.error(` āŒ Sensitive file found: ${file} (should not be published)`); errors++; } } console.log(' āœ… No sensitive files detected'); // Validate package.json console.log('\nšŸ“¦ Validating package.json...'); try { const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')); if (!pkg.name || !pkg.version || !pkg.license) { console.error(' āŒ Missing required package.json fields'); errors++; } else { console.log(' āœ… Required fields present'); } if (!pkg.repository || !pkg.bugs || !pkg.homepage) { console.warn(' āš ļø Missing recommended fields (repository, bugs, homepage)'); } } catch (e) { console.error(' āŒ Invalid package.json'); errors++; } // Check Python files for syntax console.log('\nšŸ Checking Python syntax...'); try { execSync('python3 -m py_compile mcp_server_bwt/main.py', { cwd: path.join(__dirname, '..') }); console.log(' āœ… Python syntax valid'); } catch (e) { console.error(' āŒ Python syntax error'); errors++; } // Final result console.log('\n' + '='.repeat(50)); if (errors === 0) { console.log('āœ… All validation checks passed!'); process.exit(0); } else { console.error(`āŒ Validation failed with ${errors} error(s)`); process.exit(1); }