$projectFolder = "proj" $slnName = "dbd-unlocker" function Initialize-Project { # generation Write-Host "Generating project" Set-Location $projectFolder $cmakeProcess = Start-Process -FilePath cmake -ArgumentList @("..") -NoNewWindow -Wait -PassThru Set-Location .. if ($cmakeProcess.ExitCode -ne 0) { Write-Host "CMake generation failed" exit 1 } # sln open try { $slnPath = "$projectFolder\$slnName.sln" $solutionFile = Get-Item -Path $slnPath -ErrorAction Stop $solutionFullName = $solutionFile.FullName $vsProcesses = Get-CimInstance -Query "SELECT CommandLine FROM Win32_Process WHERE Name = 'devenv.exe'" $pattern = [Regex]::Escape($solutionFullName) $isOpen = $vsProcesses | Where-Object { $_.CommandLine -match $pattern } if (-not $isOpen) { Write-Host "Starting Visual Studio..." -ForegroundColor Cyan Start-Process -FilePath $solutionFullName } else { Write-Host "Solution '$($solutionFile.Name)' is already open." -ForegroundColor Yellow } } catch { Write-Error "Failed to open solution: $($_.Exception.Message)" } } if (-not (Test-Path $projectFolder)) { New-Item -ItemType Directory -Path $projectFolder | Out-Null } Initialize-Project