C# create console project powershell script

Date: 2023-12-11

new-temp-project.ps1

function Get-CsName {
    param(
        [string]$Name,
        [string]$Fallback = "Project"
    )

    if ([string]::IsNullOrWhiteSpace($Name)) {
        return $Fallback
    }

    try {
        $name = $Name.Trim()

        # Converteer _ . \ en spatie gevolgd door een letter naar hoofdletter
        $name = [regex]::Replace($name, '[\\._ ]([a-z])', { 
            param($m) 
            $m.Groups[1].Value.ToUpper() 
        })

        # Verwijder alles wat geen letter of cijfer is
        $name = $name -replace '[^a-zA-Z0-9]', ''

        if ($name.Length -gt 0) {
            # Eerste letter hoofdletter maken
            $name = $name.Substring(0,1).ToUpper() + $name.Substring(1)
        }

        # Als de eerste char een cijfer is, prepend een underscore
        if ($name.Length -gt 0 -and $name[0] -match '\d') {
            $name = "_$name"
        }

        return $name
    }
    catch {
        Write-Host "❌ Fout: $_" -ForegroundColor Red
        return $Fallback
    }
}

# --------------------------
# Script start
# --------------------------

$rawName = Read-Host "Enter a project name"

if ([string]::IsNullOrWhiteSpace($rawName)) {
    Write-Host "❌ Geen projectnaam ingevuld. Script wordt afgebroken." -ForegroundColor Red
    exit 1
}

$projectname = Get-CsName $rawName

if (Test-Path $projectname) {
    Write-Host "⚠️ Map '$projectname' bestaat al. Script wordt afgebroken." -ForegroundColor Yellow
    exit 1
}

New-Item -ItemType Directory -Force -Path $projectname | Out-Null
Push-Location $projectname

git init

dotnet new sln -n Solution
dotnet new gitignore
dotnet new globaljson --roll-forward latestMinor
dotnet new nugetconfig

# ConsoleApp krijgt dezelfde naam als project
dotnet new console -n $projectname --use-program-main
dotnet sln add $projectname

Write-Host "✅ Project '$projectname' is aangemaakt." -ForegroundColor Green

# VS Code openen
code .
81840cookie-checkC# create console project powershell script