🗑️ Deprecate deploy-pokedex.js in favor of deploy.sh and update environment variable validation messages

This commit is contained in:
2026-01-30 11:29:28 -05:00
parent fee8fe2551
commit 84f1fcb42a
3 changed files with 51 additions and 36 deletions

View File

@@ -1,9 +1,9 @@
/**
* Build Verification Script
*
*
* Extracts and validates environment variables embedded in the built bundle.
* Ensures redirect URIs match the expected deployment target.
*
*
* Usage:
* BUILD_TARGET=docker-local npm run build:verify
* BUILD_TARGET=production npm run build:verify
@@ -36,18 +36,20 @@ function log(color, symbol, message) {
function findBuiltAssets() {
const distPath = path.resolve(__dirname, '../dist/assets');
if (!fs.existsSync(distPath)) {
throw new Error('dist/assets directory not found. Run build first.');
}
const files = fs.readdirSync(distPath);
const jsFiles = files.filter(f => f.endsWith('.js') && f.startsWith('index-'));
const jsFiles = files.filter(
f => f.endsWith('.js') && f.startsWith('index-')
);
if (jsFiles.length === 0) {
throw new Error('No built JavaScript files found in dist/assets/');
}
return jsFiles.map(f => path.join(distPath, f));
}
@@ -59,58 +61,58 @@ function extractRedirectUri(content) {
/redirectUri[\"']?\s*[:=]\s*[\"']([^\"']+oauth\/callback)[\"']/,
/(https?:\/\/[^\"'\s]+\/oauth\/callback)/
];
for (const pattern of patterns) {
const match = content.match(pattern);
if (match && match[1]) {
return match[1];
}
}
return null;
}
function verifyBuild() {
console.log('\n🔍 Build Verification\n');
// Get target from environment variable
const target = process.env.BUILD_TARGET || 'local';
if (!EXPECTED_URIS[target]) {
log('red', '❌', `Invalid BUILD_TARGET: ${target}`);
log('blue', '', 'Valid targets: docker-local, production');
process.exit(1);
}
const expectedUri = EXPECTED_URIS[target];
log('blue', '', `Deployment target: ${target}`);
log('blue', '', `Expected redirect URI: ${expectedUri}`);
try {
// Find built assets
const assetFiles = findBuiltAssets();
log('green', '✅', `Found ${assetFiles.length} built asset(s)`);
// Search for redirect URI in all assets
let foundUri = null;
for (const assetFile of assetFiles) {
const content = fs.readFileSync(assetFile, 'utf8');
const uri = extractRedirectUri(content);
if (uri) {
foundUri = uri;
break;
}
}
if (!foundUri) {
log('yellow', '⚠', 'Could not find Discord redirect URI in bundle');
log('blue', '', 'This may be OK if OAuth is not used');
process.exit(0);
}
log('blue', '', `Found redirect URI: ${foundUri}`);
// Validate URI matches expected
if (foundUri === expectedUri) {
log('green', '✅', 'Redirect URI matches expected value!');
@@ -121,13 +123,18 @@ function verifyBuild() {
log('blue', '', `Expected: ${expectedUri}`);
log('blue', '', `Found: ${foundUri}`);
console.log('\n❌ Build verification failed\n');
console.log('This usually means the wrong .env.{mode} file was used during build.');
console.log('Check that you\'re using the correct Vite mode flag:\n');
console.log(' vite build --mode docker-local (for local Docker deployment)');
console.log(' vite build --mode production (for Synology deployment)\n');
console.log(
'This usually means the wrong .env.{mode} file was used during build.'
);
console.log("Check that you're using the correct Vite mode flag:\n");
console.log(
' vite build --mode docker-local (for local Docker deployment)'
);
console.log(
' vite build --mode production (for Synology deployment)\n'
);
process.exit(1);
}
} catch (error) {
log('red', '❌', `Verification error: ${error.message}`);
process.exit(1);