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 } |