Skip to content

Correct parameters for copy file #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 43 additions & 3 deletions src/ALZ/Assets/alz-bicep-config/v0.13.0.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,53 @@
"version": "v0.13.0",
"module_url": "https://github.com/Azure/ALZ-Bicep",
"config_files": [
{
"source": "infra-as-code/bicep/modules/policy/definitions/parameters/customPolicyDefinitions.parameters.all.json",
"destination": "config/custom-parameters/customPolicyDefinitions.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/customRoleDefinitions/parameters/customRoleDefinitions.parameters.all.json",
"destination": "config/custom-parameters/customRoleDefinitions.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/hubNetworking/parameters/hubNetworking.parameters.all.json",
"destination": "config/custom-parameters/hubNetworking.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/logging/parameters/logging.parameters.all.json",
"destination": "config/custom-parameters/logging.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/managementGroups/parameters/managementGroups.parameters.all.json",
"destination": "config/custom-parameters/managementGroups.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/mgDiagSettings/parameters/mgDiagSettings.parameters.all.json",
"destination": "config/custom-parameters/mgDiagSettings.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/policy/assignments/parameters/policyAssignmentManagementGroup.dine.parameters.all.json",
"destination": "config/custom-parameters/policyAssignmentManagementGroup.dine.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/resourceGroup/parameters/resourceGroup.parameters.all.json",
"detination": "config/resourceGroup.parameters.json"
"destination": "config/custom-parameters/resourceGroupConnectivity.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/policy/definitions/parameters/customPolicyDefinitions.parameters.all.json",
"destination": "config/customPolicyDefinitions.parameters.json"
"source": "infra-as-code/bicep/modules/resourceGroup/parameters/resourceGroup.parameters.all.json",
"destination": "config/custom-parameters/resourceGroupLoggingAndSentinel.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/roleAssignments/parameters/roleAssignmentManagementGroupMany.servicePrincipal.parameters.all.json",
"destination": "config/custom-parameters/roleAssignmentManagementGroupMany.servicePrincipal.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/subscriptionPlacement/parameters/subscriptionPlacement.parameters.all.json",
"destination": "config/custom-parameters/subscriptionPlacement.parameters.json"
},
{
"source": "infra-as-code/bicep/modules/vwanConnectivity/parameters/vwanConnectivity.parameters.all.json",
"destination": "config/custom-parameters/vwanConnectivity.parameters.json"
}
],
"parameters": {
Expand Down
4 changes: 2 additions & 2 deletions src/ALZ/Private/Build-ALZDeploymentEnvFile.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ function Build-ALZDeploymentEnvFile {

$envFile = Join-Path $destination ".env"

New-Item -Path $envFile -ItemType file -Force | Out-Null
New-Item -Path $envFile -ItemType file -Force | Out-String | Write-Verbose

foreach ($configurationValue in $configuration.PsObject.Properties) {
foreach ($target in $configurationValue.Value.Targets) {
if ($target.Destination -eq "Environment") {
Add-Content -Path $envFile -Value "$($($target.Name))=`"$($configurationValue.Value.Value)`"" | Out-Null
Add-Content -Path $envFile -Value "$($($target.Name))=`"$($configurationValue.Value.Value)`"" | Out-String | Write-Verbose
}
}
}
Expand Down
32 changes: 32 additions & 0 deletions src/ALZ/Private/Copy-ALZParametersFile.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
function Copy-ALZParametersFile {
[CmdletBinding(SupportsShouldProcess = $true)]
param (
[Parameter(Mandatory = $true)]
[Alias("Output")]
[Alias("OutputDirectory")]
[Alias("O")]
[string] $alzEnvironmentDestination,

[Parameter(Mandatory = $true)]
[string]$upstreamReleaseDirectory,

[Parameter(Mandatory = $true)]
[array]$configFiles
)
foreach ($configFile in $configFiles) {
$sourcePath = Join-Path $upstreamReleaseDirectory $configFile.source
$destinationPath = Join-Path $alzEnvironmentDestination $configFile.destination
if (Test-Path $sourcePath) {
if ($PSCmdlet.ShouldProcess($sourcePath, "Copy")) {
# create destination folder if it does not exists
$destinationFolder = Split-Path -Path $destinationPath -Parent
if (-not (Test-Path $destinationFolder)) {
New-Item -ItemType Directory -Path $destinationFolder -Force | Out-String | Write-Verbose
}
Copy-Item -Path $sourcePath -Destination $destinationPath -Recurse -Force | Out-String | Write-Verbose
}
} else {
Write-Warning "The file $sourcePath does not exist."
}
}
}
2 changes: 1 addition & 1 deletion src/ALZ/Private/Get-GithubRelease.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ function Get-GithubRelease {
Move-Item -Path "$($extractedSubFolder.FullName)/*" -Destination "$releaseDirectory" -ErrorAction SilentlyContinue | Out-String | Write-Verbose
}

# Remove-Item -Path "$releaseDirectory/tmp" -Force -Recurse
Remove-Item -Path "$releaseDirectory/tmp" -Force -Recurse

} else {
Write-Verbose "===> Content already exists in $releaseDirectory. Skipping"
Expand Down
10 changes: 5 additions & 5 deletions src/ALZ/Private/New-ALZDirectoryEnvironment.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ function New-ALZDirectoryEnvironment {
$configModules = Join-Path $alzEnvironmentDestination "config" "modules"
$upstream = Join-Path $alzEnvironmentDestination "upstream-releases"

New-Item -ItemType Directory -Path $alzEnvironmentDestination -Force | Out-Null
New-Item -ItemType Directory -Path $gitHubPipeline -Force | Out-Null
New-Item -ItemType Directory -Path $config -Force | Out-Null
New-Item -ItemType Directory -Path $upstream -Force | Out-Null
New-Item -ItemType Directory -Path $configModules -Force | Out-Null
New-Item -ItemType Directory -Path $alzEnvironmentDestination -Force | Out-String | Write-Verbose
New-Item -ItemType Directory -Path $gitHubPipeline -Force | Out-String | Write-Verbose
New-Item -ItemType Directory -Path $config -Force | Out-String | Write-Verbose
New-Item -ItemType Directory -Path $upstream -Force | Out-String | Write-Verbose
New-Item -ItemType Directory -Path $configModules -Force | Out-String | Write-Verbose

}
21 changes: 21 additions & 0 deletions src/ALZ/Private/Test-ALZGitRepository.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function Test-ALZGitRepository {
[CmdletBinding(SupportsShouldProcess = $true)]
param (
[Parameter(Mandatory = $true)]
[Alias("Output")]
[Alias("OutputDirectory")]
[Alias("O")]
[string] $alzEnvironmentDestination
)
$gitDirectory = Join-Path $alzEnvironmentDestination ".git"
if (Test-Path $gitDirectory) {
Write-Verbose "The directory $alzEnvironmentDestination is already a git repository."
return $true
}
$gitInit = Read-Host "Initialize the directory $alzEnvironmentDestination as a git repository? (y/n)"
if ($gitInit -ieq "y" -and $PSCmdlet.ShouldProcess("gitrepository", "initialize")) {
git init $alzEnvironmentDestination
return $true
}
return $false
}
14 changes: 10 additions & 4 deletions src/ALZ/Public/New-ALZEnvironment.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,23 @@ function New-ALZEnvironment {

$bicepConfig = Get-ALZBicepConfig -alzBicepVersion $alzBicepVersion

New-ALZDirectoryEnvironment -alzEnvironmentDestination $alzEnvironmentDestination | Out-Null
New-ALZDirectoryEnvironment -alzEnvironmentDestination $alzEnvironmentDestination | Out-String | Write-Verbose

$alzEnvironmentDestinationInternalCode = Join-Path $alzEnvironmentDestination "upstream-releases"
Get-GithubRelease -directoryForReleases $alzEnvironmentDestinationInternalCode -githubRepoUrl $bicepConfig.module_url -releases @($bicepConfig.version) | Out-Null
Get-GithubRelease -directoryForReleases $alzEnvironmentDestinationInternalCode -githubRepoUrl $bicepConfig.module_url -releases @($bicepConfig.version) | Out-String | Write-Verbose
Write-InformationColored "Copying ALZ-Bicep module to $alzEnvironmentDestinationInternalCode" -ForegroundColor Green -InformationAction Continue
Copy-ALZParametersFile -alzEnvironmentDestination $alzEnvironmentDestination -upstreamReleaseDirectory $(Join-Path $alzEnvironmentDestinationInternalCode $bicepConfig.version) -configFiles $bicepConfig.config_files | Out-String | Write-Verbose
Copy link
Contributor

@lovelysandwich lovelysandwich Mar 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Write-Verbose - is absolute genius.

Write-InformationColored "ALZ-Bicep source directory: $alzBicepSourceDirectory" -ForegroundColor Green -InformationAction Continue

$configuration = Request-ALZEnvironmentConfig -configurationParameters $bicepConfig.parameters

Edit-ALZConfigurationFilesInPlace -alzEnvironmentDestination $alzEnvironmentDestination -configuration $configuration | Out-Null
Build-ALZDeploymentEnvFile -configuration $configuration -Destination $alzEnvironmentDestination | Out-Null
Edit-ALZConfigurationFilesInPlace -alzEnvironmentDestination $alzEnvironmentDestination -configuration $configuration | Out-String | Write-Verbose
Build-ALZDeploymentEnvFile -configuration $configuration -Destination $alzEnvironmentDestination | Out-String | Write-Verbose

$isGitRepo = Test-ALZGitRepository -alzEnvironmentDestination $alzEnvironmentDestination
if (-not $isGitRepo) {
Write-InformationColored "The directory $alzEnvironmentDestination is not a git repository. Please make it is a git repo after initialization." -ForegroundColor Red -InformationAction Continue
}
}

return $true
Expand Down
11 changes: 11 additions & 0 deletions src/Tests/Unit/Public/New-ALZEnvironment.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ InModuleScope 'ALZ' {
@{
"module_url" = "test"
"version" = "v1.0.0"
"config_files" = @(
@{
"source" = "a"
"destination" = "b"
}
)
"parameters" = @{
"test" = @{
"type" = "string"
Expand All @@ -59,7 +65,12 @@ InModuleScope 'ALZ' {

Mock -CommandName Get-GithubRelease -MockWith { }

Mock -CommandName Test-ALZGitRepository -MockWith { $false }

Mock -CommandName Copy-ALZParametersFile -MockWith { }

Mock -CommandName Write-InformationColored

}

It 'should return the output directory on completion' {
Expand Down