ConvertTo-SitecoreWDP.ps1
#Set-StrictMode -Version Latest ##################################################### # ConvertTo-SitecoreWDP ##################################################### <#PSScriptInfo .VERSION 0.1 .GUID 4979bafc-b791-42b6-98c1-dd4c8eb586d0 .AUTHOR David Walker, Sitecore Dave, Radical Dave .COMPANYNAME David Walker, Sitecore Dave, Radical Dave .COPYRIGHT David Walker, Sitecore Dave, Radical Dave .TAGS powershell sitecore package .LICENSEURI https://github.com/SharedSitecore/ConvertTo-SitecoreWDP/blob/main/LICENSE .PROJECTURI https://github.com/SharedSitecore/ConvertTo-SitecoreWDP .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .DESCRIPTION PowerShell Script to Create Sitecore WDP packages (helper/wrapper for Sitecore Azure Toolkit) .PARAMETER name Path of package #> ##################################################### # ConvertTo-SitecoreWDP ##################################################### [CmdletBinding(SupportsShouldProcess)] Param( [Parameter(Mandatory=$true)] [string] $path, [Parameter(Mandatory=$false)] [string] $destination = "", [Parameter(Mandatory=$false)] [string] $destinationPath = "", [Parameter(Mandatory=$false)] [string] $type = "module", [Parameter(Mandatory=$false)] [string] $satPath = "", [Parameter(Mandatory=$false)] #[string] $satURL = "https://sitecoredev.azureedge.net/~/media/75A6FF723F0C48E991D7BB656DFA6FEF.ashx", [string] $satURL = "https://sitecoredev.azureedge.net/~/media/0041D6C02A8041E89C13B611B2432834.ashx", [Parameter(Mandatory=$false)] #[string] $satPackageName = "Sitecore Azure Toolkit 2.6.1-r02533.1198.zip", [string] $satPackageName = "Sitecore Azure Toolkit 2.7.0-r02533.1285.zip", [Parameter(Mandatory=$false)] [switch] $removePostStep = $false, [Parameter(Mandatory=$false)] [switch] $skipCD = $false ) begin { $ProgressPreference = "SilentlyContinue" $ErrorActionPreference = 'Stop' $PSScriptName = ($MyInvocation.MyCommand.Name.Replace(".ps1","")) $PSCallingScript = if ($MyInvocation.PSCommandPath) { $MyInvocation.PSCommandPath | Split-Path -Parent } else { $null } Write-Verbose "$PSScriptRoot\$PSScriptName $path called by:$PSCallingScript" @('Get-ArchiveEntries','Remove-ArchiveEntries','Set-ArchiveEntries','Import-SitecoreAzureToolkit').foreach({ if (-not (Get-Command -Name $_)) {Install-Script -Name $_ -Confirm:$False -Force } }) $paths = @() if((Test-Path $path) -and ($path.IndexOf("*") -eq -1 -and $path.IndexOf("/") -eq -1 -and $path.IndexOf("\") -eq -1)) { Write-Verbose "using path:$path" $paths = @($path) } else { if ($path.IndexOf('*') -ne -1 -or $path.IndexOf('/') -ne -1 -or $path.IndexOf('\') -ne -1) { if ($path.IndexOf(':') -eq -1) { $path = Join-Path (Get-Location) $path } Write-Verbose "path:$path" $paths = (Get-ChildItem -Path "$path").FullName } else { Write-Verbose "path:$(Get-Location)\*-$path.zip" $paths = (Get-ChildItem -Path "$(Get-Location)\*-$path.zip").FullName } } Write-Verbose "paths:$($paths.Length)" } process { try { Import-SitecoreAzureToolkit (Join-Path (Split-Path $PSScriptRoot -Parent) 'Convert-ToSitecoreWDP/SAT') $paths.foreach({ $path = $_ Write-Verbose "path:$path" try { $file = (Split-Path $path -leaf).Replace('.zip', '') $tempFolder = "$ENV:Temp\ConvertTo-SitecoreWDP" if (Test-Path $tempFolder) { Remove-Item -Path $tempFolder -Recurse -Force} if (!(Test-Path $tempFolder)) { New-Item -Path $tempFolder -ItemType Directory} $source = "$ENV:Temp\ConvertTo-SitecoreWDP\$file.zip" Copy-Item $path $source -Force #if (!(Test-Path($path)) -and (-not(Split-Path $path -parent))) { $path = Join-Path (Get-Location) $path } Write-Verbose "source:$source" if (!$destinationPath) { $destinationPath = Join-Path (Split-Path $path -parent) 'scwdp' } $destination = Join-Path $destinationPath (Split-Path $path -leaf).Replace('.zip', '.scwdp.zip') #if (!$destination) { $destination = Join-Path $destinationPath (Split-Path $path -leaf).Replace('.zip', '.scwdp.zip') } if (!(Test-Path($source))) { Write-Error "ERROR - Make sure the $path exists!" } else { if (!(Test-Path($destinationPath))) { New-Item -ItemType Directory -Force -Path $destinationPath } if (Test-Path($destination)) { Remove-Item -Path $destination -Force } if ($removePostStep -or $removePostStep -eq '$true') { Set-ArchiveEntries $source @('metadata/sc_poststep.txt') } Write-Verbose "source:$source" Write-Verbose "destinationPath:$destinationPath" if ($type -eq 'module') { $results = ConvertTo-SCModuleWebDeployPackage -Path $source -Destination $destinationPath -Force } else { $results = ConvertTo-SCWebDeployPackage -Path $source -Destination $destinationPath -Force } Write-Host "SUCCESS. Generated: $results" -ForegroundColor Yellow if (!$skipCD) { $cmitems = Get-ArchiveEntries $path @('items/*','/properties/items/*') if ($cmitems.Count -gt 0) { $cdpath = $source.Replace('.zip','-CD.zip') Copy-Item $source $cdpath -Force Remove-ArchiveEntries $cdpath @('items/*','properties/items/*') } } } } catch { Write-Error "ERROR ConvertTo-SitecoreWDP $($path):$_" -InformationVariable results } }) #if (Test-Path $tempFolder) { Remove-Item -Path $tempFolder -Recurse -Force} } catch { Write-Error "ERROR ConvertTo-SitecoreWDP $($path):$_" -InformationVariable results } Write-Verbose "$PSScriptName $path end" } |