Private/Add-RocketCore.ps1

function Add-RocketCore {
    param (
        [string]$ProjectName,
        [string]$Path = $PWD,
        [bool]$NeedFormsModule = $false,
        [bool]$NeedGuiModule = $false
    )

    $projectPath = Join-Path $Path $Name
    New-Item -Path $projectPath -ItemType Directory | Out-Null
    Set-Location $projectPath
    $message = "Creating new Rocket project @$Name"

    Write-Progress -Activity $message -Status "10% Complete:" -PercentComplete 10

    # Create project structure
    New-Item -Path $projectPath -Name "startup.ps1" -ItemType File | Out-Null
    New-Item -Path $projectPath -Name "config.ps1" -ItemType File | Out-Null
    New-Item -Path $projectPath -Name "public" -ItemType Directory | Out-Null

    Write-Progress -Activity $message -Status "20% Complete:" -PercentComplete 20

    # Create default files
    New-Item -Path $projectPath -Name "README.md" -ItemType File | Out-Null
    New-Item -Path $projectPath -Name ".gitignore" -ItemType File | Out-Null
    New-Item -Path $projectPath -Name ".editorconfig" -ItemType File | Out-Null

    $message = "Generating README file"
    Write-Progress -Activity $message -Status "30% Complete:" -PercentComplete 30

    # Writing default content to Readme
    Import-Module Rocket
    Import-Module Scout

    Write-Progress -Activity $message -Status "40% Complete:" -PercentComplete 40

    $pwshVersion = $PSVersionTable.PSVersion.ToString()
    $rocketVersion = (Get-Module Rocket).Version
    $scoutVersion = (Get-Module Scout).Version

    Write-Progress -Activity $message -Status "50% Complete:" -PercentComplete 50

    $readmeContent = Get-Content -Path "$PSScriptRoot\Templates\Base\readme.txt" -Raw
    $readmeContent = Invoke-ScoutRender -Content $readmeContent -Ctx @{
        pwshVersion = $pwshVersion
        rocketVersion = $rocketVersion
        scoutVersion = $scoutVersion
    }

    Set-Content -Path "$projectPath\README.md" -Value $readmeContent

    $message = "Donwloading .gitignore"
    Write-Progress -Activity $message -Status "60% Complete:" -PercentComplete 60

    # Writing default content to .gitignore
    $gitignoreContent = Get-Content -Path "$PSScriptRoot\Templates\Base\gitignore.txt" -Raw
    Set-Content -Path "$projectPath\.gitignore" -Value $gitignoreContent

    $message = "Donwloading .editorconfig"
    Write-Progress -Activity $message -Status "70% Complete:" -PercentComplete 70
    

    # Writing default content to .editorconfig
    $editorconfigContent = Get-Content -Path "$PSScriptRoot\Templates\Base\editorconfig.txt" -Raw
    Set-Content -Path "$projectPath\.editorconfig" -Value $editorconfigContent


    $message = "Generating startup file"
    Write-Progress -Activity $message -Status "80% Complete:" -PercentComplete 80

    # Writing default content to config.ps1
    $configContent = Get-Content -Path "$PSScriptRoot\Templates\Base\config.txt" -Raw
    Write-Progress -Activity $message -Status "90% Complete:" -PercentComplete 90

    $configContent = $configContent -replace "Rocket", $ProjectName
    Set-Content -Path "$projectPath\config.ps1" -Value $configContent

    if ($needFormsModule) {
        $startupContent = Get-Content -Path "$PSScriptRoot\Templates\Custom\startup-forms.txt" -Raw
    } elseif ($needGuiModule) {
        $startupContent = Get-Content -Path "$PSScriptRoot\Templates\Custom\startup-gui.txt" -Raw
    } else {
        $startupContent = Get-Content -Path "$PSScriptRoot\Templates\Custom\startup-core.txt" -Raw
    }

    Set-Content -Path "$projectPath\startup.ps1" -Value $startupContent

    Write-Progress -Activity $message -Status "100% Complete:" -PercentComplete 100

}