Microsoft.PowerPlatform.DevOps.psm1
Write-Verbose "Importing Functions" # Import everything in these folders foreach ($folder in @('private', 'public', 'classes')) { $root = Join-Path -Path $PSScriptRoot -ChildPath $folder if (Test-Path -Path $root) { Write-Verbose "processing folder $root" $files = Get-ChildItem -Path $root -Filter *.ps1 # dot source each file $files | where-Object { $_.name -NotLike '*.Tests.ps1' } | ForEach-Object { Write-Verbose $_.name; . $_.FullName } } } if (!(Test-Path "$env:APPDATA\Microsoft.PowerPlatform.DevOps")) { New-Item -Path "$env:APPDATA\Microsoft.PowerPlatform.Devops" -ItemType Directory } if (!(Test-Path "$env:APPDATA\Microsoft.PowerPlatform.DevOps\devopsConfig.json")) { Copy-Item (Join-Path $PSScriptRoot "\devopsConfig.json") -Destination "$env:APPDATA\Microsoft.PowerPlatform.DevOps\devopsConfig.json" } $global:configFile = Get-Content ("$env:APPDATA\Microsoft.PowerPlatform.DevOps\devopsConfig.json") | ConvertFrom-Json $global:version = Get-ManifestValue (Join-Path $PSScriptRoot "\Microsoft.PowerPlatform.DevOps.psd1") -PropertyName 'ModuleVersion' -Passthru $global:projectFile = "False" $global:gitRepo = "" $global:logo = @" ____ ____ _ _ __ ____ ___ | _ \ _____ _____ _ __ | _ \| | __ _| |_ / _| ___ _ __ _ __ ___ | _ \ _____ __/ _ \ _ __ ___ | |_) / _ \ \ /\ / / _ \ '__| | |_) | |/ _` | __| |_ / _ \| '__| '_ ` _ \ | | | |/ _ \ \ / / | | | '_ \/ __| | __/ (_) \ V V / __/ | | __/| | (_| | |_| _| (_) | | | | | | | | | |_| | __/\ V /| |_| | |_) \__ \ |_| \___/ \_/\_/ \___|_| |_| |_|\__,_|\__|_| \___/|_| |_| |_| |_| |____/ \___| \_/ \___/| .__/|___/ |_| "@ $global:message = @" Welcome to the Power Platform DevOps configuration script. ver. $global:version "@ function Install-PreReqs { $message = "Checking Pre-requisites" Write-Host $message try { Invoke-InstallPreRequisites $global:configfile.PreReqsComplete = "True" } catch { $global:configfile.PreReqsComplete = "Error" pause } $global:configfile | ConvertTo-Json | Set-Content ("$env:APPDATA\Microsoft.PowerPlatform.DevOps\devopsConfig.json") } function Connect-AzureDevOps { $message = "Configuring Azure DevOps" Write-Host $message try { Invoke-AzureDevOps $global:projectFile.ADOConfigured = "True" } catch { $global:projectFile.ADOConfigured = "Error" pause } $global:projectFile | ConvertTo-Json | Set-Content ("$env:APPDATA\Microsoft.PowerPlatform.Devops\$global:gitRepo\$global:gitRepo.json") } function Add-Solution { $message = "Adding D365 / CDS Solution" Write-Host $message try { Invoke-AddSolution $global:projectFile.SolutionAdded = "True" } catch { $global:projectFile.SolutionAdded = "Error" pause } $global:projectFile | ConvertTo-Json | Set-Content ("$env:APPDATA\Microsoft.PowerPlatform.Devops\$global:gitRepo\$global:gitRepo.json") } function Add-CICDEnvironment { $message = "Configuring CI/CD Environment" Write-Host $message try { Invoke-ConfigureCICD } catch { $global:projectFile.CICDEnvironmentName = "Error" pause } $global:projectFile | ConvertTo-Json | Set-Content ("$env:APPDATA\Microsoft.PowerPlatform.Devops\$global:gitRepo\$global:gitRepo.json") } function Add-Project { $message = "Adding PowerPlatform DevOps Project" Write-Host $message if ($global:configfile.Projects.Count -gt 1 -or $global:configfile.Projects[0].ID -ne "placeholder") { do { $createOrSelect = Read-Host "Do you want to [S]elect and Existing Project or [C]reate a new one? ([Q]uit)" switch ($createOrSelect) { 'C' {Add-GitRepo} 'S' {Select-GitRepo} } } until (($createOrSelect -eq 'q') -or ($createOrSelect -eq 'c') -or ($createOrSelect -eq 's')) } else { Add-GitRepo } try { } catch { $global:projectFile.SolutionAdded = "Error" pause } #$global:projectFile | ConvertTo-Json | Set-Content ("$env:APPDATA\Microsoft.PowerPlatform.Devops\$global:gitRepo\$global:gitRepo.json") $global:configfile | ConvertTo-Json | Set-Content ("$env:APPDATA\Microsoft.PowerPlatform.DevOps\devopsConfig.json") } function Invoke-PowerPlatformDevOps { Write-Host "" [console]::ForegroundColor = "White" do { $global:configFile = Get-Content ("$env:APPDATA\Microsoft.PowerPlatform.DevOps\devopsConfig.json") | ConvertFrom-Json if ($global:projectFile -ne "False") { $global:gitRepo = $($global:projectFile.gitRepo) Set-Location $global:projectFile.ProjectLocation } Show-Menu $selection = Read-Host "Please make a selection (Purple items are optional)" switch ($selection) { '1' { Install-PreReqs } '2' { Add-Project } '3' { Connect-AzureDevOps } '4' { Add-Solution } '5' { Add-CICDEnvironment } } Write-Host "" } until ($selection -eq 'q') } Export-ModuleMember -Function 'Invoke-PowerPlatformDevOps', 'Add-CICDEnvironment', 'Add-Solution', 'Connect-AzureDevOps', 'Install-PreReqs' |