Set-Tokens.ps1
#Set-StrictMode -Version Latest ##################################################### # Set-Tokens ##################################################### <#PSScriptInfo .VERSION 0.6 .GUID bfd55243-60dd-4394-a80e-835718187e1f .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/Set-Tokens/blob/main/LICENSE .PROJECTURI https://github.com/SharedSitecore/Set-Tokens .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .DESCRIPTION PowerShell Script to set/replace tokens in strings and files .PARAMETER name Path of package #> ##################################################### # Set-Tokens ##################################################### [CmdletBinding(SupportsShouldProcess)] Param( [Parameter(Mandatory=$false)] [string] $source, [Parameter(Mandatory=$false)] [string] $destination, [Parameter(Mandatory=$false)] [string] $regex = '(\$\()([a-zA-Z0-9\.\-_]*)(\))' ) begin { $ProgressPreference = "SilentlyContinue" $ErrorActionPreference = 'Stop' $PSScriptName = ($MyInvocation.MyCommand.Name.Replace(".ps1","")) $PSCallingScript = if ($MyInvocation.PSCommandPath) { $MyInvocation.PSCommandPath | Split-Path -Parent } else { $null } $currLocation = "$(Get-Location)" Write-Verbose "$PSScriptRoot\$PSScriptName $source $destination called by:$PSCallingScript from $currLocation" function Set-TokenContent($string) { if (!$string) { return $string } $results = $string $tokens = [regex]::Matches($string,$regex) if (!$tokens) { return $string } $tokens | Foreach-Object { $org = $_.groups[0].value $token = $org #Write-Verbose "token:$token" if ($token -like '$(*') { $token = $token.Remove(0,2) $token = $token.Substring(0, $token.Length - 1) } $value = [System.Environment]::GetEnvironmentVariable($token) #Write-Verbose "Set-TokenContent:$token=$value" $results = $results.replace($org,$value) } return $results } if (!$source) { $source = "$currLocation\*.json" } #Write-Verbose "source:$source" @((Split-Path $profile -Parent),$PSScriptRoot,("$currLocation" -ne "$PSScriptRoot" ? $currLocation : ''),(Split-Path $source -Parent) |