Files
protekauto-cms/scripts/startup.mjs
2025-06-26 06:59:19 +03:00

84 lines
2.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
import { spawn } from 'child_process'
console.log('🚀 Запуск ProtekAuto CMS...')
// Функция для запуска команды
function runCommand(command, args = []) {
return new Promise((resolve, reject) => {
console.log(`📋 Выполняется команда: ${command} ${args.join(' ')}`)
const process = spawn(command, args, {
stdio: 'inherit',
shell: true
})
process.on('close', (code) => {
if (code === 0) {
resolve()
} else {
reject(new Error(`Команда завершилась с кодом ${code}`))
}
})
process.on('error', (error) => {
reject(error)
})
})
}
async function startup() {
try {
console.log('🔄 Проверка переменных окружения...')
const requiredEnvVars = [
'DATABASE_URL',
'NEXTAUTH_SECRET',
'AWS_ACCESS_KEY_ID',
'AWS_SECRET_ACCESS_KEY',
'AWS_S3_BUCKET',
'S3_ENDPOINT'
]
const optionalEnvVars = [
'BEELINE_SMS_USER',
'BEELINE_SMS_PASS',
'BEELINE_SMS_SENDER'
]
const missingVars = requiredEnvVars.filter(varName => !process.env[varName])
if (missingVars.length > 0) {
console.error('❌ Отсутствуют обязательные переменные окружения:')
missingVars.forEach(varName => console.error(` - ${varName}`))
process.exit(1)
}
console.log('✅ Все обязательные переменные окружения установлены')
// Проверяем опциональные переменные SMS
const missingSmsVars = optionalEnvVars.filter(varName => !process.env[varName])
if (missingSmsVars.length > 0) {
console.warn('⚠️ Отсутствуют переменные для SMS API (SMS функции будут недоступны):')
missingSmsVars.forEach(varName => console.warn(` - ${varName}`))
} else {
console.log('✅ SMS API настроен')
}
console.log('🔄 Выполнение миграций базы данных...')
await runCommand('npx', ['prisma', 'migrate', 'deploy'])
console.log('🔄 Генерация Prisma клиента...')
await runCommand('npx', ['prisma', 'generate'])
console.log('🚀 Запуск сервера...')
await runCommand('npm', ['start'])
} catch (error) {
console.error('❌ Ошибка при запуске:', error.message)
process.exit(1)
}
}
startup()