73 lines
2.4 KiB
PowerShell
73 lines
2.4 KiB
PowerShell
# Jalankan backend ESP32 + atur variabel environment untuk koneksi MySQL.
|
|
# Jika .env belum ada, skrip ini akan minta input sekali saja dan menyimpan konfigurasi.
|
|
|
|
$root = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
Set-Location $root
|
|
|
|
function Load-EnvFile {
|
|
param([string]$path)
|
|
$data = @{}
|
|
foreach ($line in Get-Content $path) {
|
|
$trim = $line.Trim()
|
|
if ([string]::IsNullOrWhiteSpace($trim) -or $trim.StartsWith('#')) { continue }
|
|
$parts = $trim.Split('=', 2)
|
|
if ($parts.Count -eq 2) {
|
|
$data[$parts[0].Trim()] = $parts[1].Trim()
|
|
}
|
|
}
|
|
return $data
|
|
}
|
|
|
|
function Save-EnvFile {
|
|
param([string]$path, [hashtable]$data)
|
|
$lines = @()
|
|
foreach ($key in $data.Keys) {
|
|
$lines += "$key=$($data[$key])"
|
|
}
|
|
$lines | Set-Content -Path $path -Encoding UTF8
|
|
}
|
|
|
|
$envPath = Join-Path $root ".env"
|
|
if (Test-Path $envPath) {
|
|
$envData = Load-EnvFile $envPath
|
|
} else {
|
|
Write-Host ".env tidak ditemukan. Masukkan konfigurasi MySQL untuk setup sekali jalan."
|
|
$dbUser = Read-Host "DB_USER (MySQL username)"
|
|
$dbPasswordSecure = Read-Host "DB_PASSWORD (MySQL password)" -AsSecureString
|
|
$dbPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($dbPasswordSecure))
|
|
$dbHost = Read-Host "DB_HOST [127.0.0.1]"
|
|
if ([string]::IsNullOrWhiteSpace($dbHost)) { $dbHost = '127.0.0.1' }
|
|
$dbPort = Read-Host "DB_PORT [3306]"
|
|
if ([string]::IsNullOrWhiteSpace($dbPort)) { $dbPort = '3306' }
|
|
$dbName = Read-Host "DB_NAME [face_db]"
|
|
if ([string]::IsNullOrWhiteSpace($dbName)) { $dbName = 'face_db' }
|
|
|
|
$envData = @{
|
|
DB_USER = $dbUser
|
|
DB_PASSWORD = $dbPassword
|
|
DB_HOST = $dbHost
|
|
DB_PORT = $dbPort
|
|
DB_NAME = $dbName
|
|
HOST = '0.0.0.0'
|
|
PORT = '8000'
|
|
FACE_MODEL = 'Facenet'
|
|
}
|
|
Save-EnvFile -path $envPath -data $envData
|
|
Write-Host ".env dibuat di $envPath"
|
|
}
|
|
|
|
foreach ($key in $envData.Keys) {
|
|
Set-Item -Path "env:$key" -Value $envData[$key]
|
|
}
|
|
|
|
$venvActivate = Join-Path $root ".venv\Scripts\Activate.ps1"
|
|
if (Test-Path $venvActivate) {
|
|
Write-Host "Mengaktifkan venv .venv..."
|
|
. $venvActivate
|
|
} else {
|
|
Write-Host "Virtual environment .venv tidak ditemukan. Pastikan sudah di-setup jika diperlukan."
|
|
}
|
|
|
|
Write-Host "Environment variables sudah diset. Menjalankan esp32_http_server.py..."
|
|
py .\esp32_http_server.py
|