91 lines
2.5 KiB
PowerShell
91 lines
2.5 KiB
PowerShell
#////////// PROJECT FILE SEPARATION LINE ////////// CODE AFTER THIS LINE ARE FROM: <ProjectRoot>/CarrotStash.ps1
|
|
|
|
# ------------------------------------------
|
|
# SYMBOLS
|
|
# ------------------------------------------
|
|
$Symbol_Pending = [char]0x23FA
|
|
$Symbol_Working = [char]0x23F3
|
|
$Symbol_Completed = [char]0x2705
|
|
|
|
# ------------------------------------------
|
|
# STEP FUNCTION
|
|
# ------------------------------------------
|
|
function Run-Step {
|
|
param (
|
|
[string]$Label,
|
|
[scriptblock]$Action
|
|
)
|
|
|
|
Write-Host "$Symbol_Working $Label..."
|
|
try {
|
|
& $Action
|
|
Write-Host "$Symbol_Completed $Label`n"
|
|
}
|
|
catch {
|
|
Write-Error "❌ Failed: $Label"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# ------------------------------------------
|
|
# CONFIG
|
|
# ------------------------------------------
|
|
$ProjectRoot = $PSScriptRoot
|
|
$NodePath = Join-Path $ProjectRoot "NodeJS\node.exe"
|
|
$NpmCliJs = Join-Path $ProjectRoot "NodeJS\node_modules\npm\bin\npm-cli.js"
|
|
$NodeDir = Split-Path $NodePath
|
|
$PackageJsonPath = Join-Path $ProjectRoot "package.json"
|
|
$ViteConfigPath = Join-Path $ProjectRoot "vite.config.mjs"
|
|
|
|
# ------------------------------------------
|
|
# VALIDATION
|
|
# ------------------------------------------
|
|
if (-not (Test-Path $NodePath)) {
|
|
Write-Error "❌ NodeJS not found in: $NodePath"
|
|
exit 1
|
|
}
|
|
if (-not (Test-Path $NpmCliJs)) {
|
|
Write-Error "❌ npm-cli.js not found in: $NpmCliJs"
|
|
exit 1
|
|
}
|
|
if (-not (Test-Path $PackageJsonPath)) {
|
|
Write-Error "❌ package.json not found in project root."
|
|
exit 1
|
|
}
|
|
if (-not (Test-Path $ViteConfigPath)) {
|
|
Write-Error "❌ vite.config.mjs not found in project root."
|
|
exit 1
|
|
}
|
|
|
|
# ------------------------------------------
|
|
# PATCH ENVIRONMENT PATH
|
|
# ------------------------------------------
|
|
$env:PATH = "$NodeDir;$env:PATH"
|
|
|
|
# ------------------------------------------
|
|
# FUNCTION: Run-Npm
|
|
# ------------------------------------------
|
|
function Run-Npm {
|
|
param (
|
|
[Parameter(ValueFromRemainingArguments = $true)]
|
|
[string[]]$Args
|
|
)
|
|
|
|
Write-Host "📦 Running: $NodePath $NpmCliJs $($Args -join ' ')" -ForegroundColor DarkGray
|
|
& $NodePath $NpmCliJs @Args
|
|
}
|
|
|
|
# ------------------------------------------
|
|
# EXECUTION
|
|
# ------------------------------------------
|
|
|
|
Run-Step "Installing project dependencies from package.json" {
|
|
Run-Npm @("install")
|
|
}
|
|
|
|
# ------------------------------------------
|
|
# Launch App
|
|
# ------------------------------------------
|
|
Write-Host "`n🎉 CarrotStash setup complete!" -ForegroundColor Green
|
|
& $NodePath $NpmCliJs exec vite
|