Octopus.Script exported 2016-08-24 by lijunkang belongs to ‘XML’ category.
You can use this script to easily transform any XML file using XDT. The script will download its dependencies automatically.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Source file path
sourceFile
null
Transform file path
transformFile
null
Destination file path
destFile
null
Directory to download tools programs
toolsDir = C:\tools
null
Script body
Steps based on this template will execute the following PowerShell script.
function Get-Parameter($Name, $Default, [switch]$Required) {
$result = $null
if ($OctopusParameters -ne $null) {
$result = $OctopusParameters[$Name]
}
if ($result -eq $null) {
if ($Required) {
throw "Missing parameter value $Name"
} else {
$result = $Default
}
}
return $result
}
$toolsDir = Get-Parameter "toolsDir" -Required
$sourceFile = Get-Parameter "sourceFile" -Required
$transformFile = Get-Parameter "transformFile" -Required
$destFile = Get-Parameter "destFile" -Required
if(!(Test-Path $toolsDir)){
New-Item -Path $toolsDir -ItemType Directory
}
$nugetDestPath = Join-Path -Path $toolsDir -ChildPath nuget.exe
if(!(Test-Path $nugetDestPath)){
Write-Output 'Downloading nuget.exe'
# download nuget
Invoke-WebRequest 'http://nuget.org/nuget.exe' -OutFile $nugetDestPath
# double check that it was written to disk
if(!(Test-Path $nugetDestPath)){
throw 'unable to download nuget'
}
}
$xdtExe = (Get-ChildItem -Path $toolsDir -Include 'SlowCheetah.Xdt.exe' -Recurse) | Select-Object -First 1
if(!$xdtExe){
Write-Output 'Downloading xdt since it was not found in the tools folder'
# nuget install SlowCheetah.Xdt -Prerelease -OutputDirectory toolsDir\
$nugetInstallCmdArgs = @('install','SlowCheetah.Xdt','-Prerelease','-OutputDirectory',(Resolve-Path $toolsDir).ToString())
Write-Output ('Calling nuget.exe to download SlowCheetah.Xdt with the following args: [{0} {1}]' -f $nugetDestPath, ($nugetInstallCmdArgs -join ' '))
&($nugetDestPath) $nugetInstallCmdArgs
$xdtExe = (Get-ChildItem -Path $toolsDir -Include 'SlowCheetah.Xdt.exe' -Recurse) | Select-Object -First 1
if(!$xdtExe){
throw ('SlowCheetah.Xdt not found')
}
# copy the xdt assemlby if the xdt directory is missing it
$xdtDllExpectedPath = (Join-Path $xdtExe.Directory.FullName 'Microsoft.Web.XmlTransform.dll')
if(!(Test-Path $xdtDllExpectedPath)){
# copy the xdt.dll next to the slowcheetah .exe
$xdtDll = (Get-ChildItem -Path $toolsDir -Include 'Microsoft.Web.XmlTransform.dll' -Recurse) | Select-Object -First 1
if(!$xdtDll){
throw 'Microsoft.Web.XmlTransform.dll not found'
}
Copy-Item -Path $xdtDll.Fullname -Destination $xdtDllExpectedPath
}
}
$cmdArgs = @((Resolve-Path $sourceFile).ToString(),
(Resolve-Path $transformFile).ToString(),
(Resolve-Path $destFile).ToString())
Write-Output ('Calling slowcheetah.xdt.exe with the args: [{0} {1}]' -f $xdtExe, ($cmdArgs -join ' '))
&($xdtExe) $cmdArgs
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "569a5f1b-bb57-491a-9c4e-a6d6e44e6b26",
"Name": "XML Transform using XDT",
"Description": "You can use this script to easily transform any XML file using XDT.\nThe script will download its dependencies automatically.",
"Version": 8,
"ExportedAt": "2016-08-24T07:11:46.726+00:00",
"ActionType": "Octopus.Script",
"Author": "lijunkang",
"Parameters": [
{
"Name": "sourceFile",
"Label": "Source file path",
"HelpText": null,
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "transformFile",
"Label": "Transform file path",
"HelpText": null,
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "destFile",
"Label": "Destination file path",
"HelpText": null,
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "toolsDir",
"Label": "Directory to download tools programs",
"HelpText": null,
"DefaultValue": "C:\\tools",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.ScriptBody": "function Get-Parameter($Name, $Default, [switch]$Required) {\n $result = $null\n\n if ($OctopusParameters -ne $null) {\n $result = $OctopusParameters[$Name]\n }\n\n if ($result -eq $null) {\n if ($Required) {\n throw \"Missing parameter value $Name\"\n } else {\n $result = $Default\n }\n }\n\n return $result\n}\n\n$toolsDir = Get-Parameter \"toolsDir\" -Required\n$sourceFile = Get-Parameter \"sourceFile\" -Required\n$transformFile = Get-Parameter \"transformFile\" -Required\n$destFile = Get-Parameter \"destFile\" -Required\n\nif(!(Test-Path $toolsDir)){\n New-Item -Path $toolsDir -ItemType Directory\n}\n$nugetDestPath = Join-Path -Path $toolsDir -ChildPath nuget.exe\nif(!(Test-Path $nugetDestPath)){\n Write-Output 'Downloading nuget.exe'\n\t# download nuget\n Invoke-WebRequest 'http://nuget.org/nuget.exe' -OutFile $nugetDestPath\n # double check that it was written to disk\n if(!(Test-Path $nugetDestPath)){\n throw 'unable to download nuget'\n }\n}\n\n$xdtExe = (Get-ChildItem -Path $toolsDir -Include 'SlowCheetah.Xdt.exe' -Recurse) | Select-Object -First 1\n\nif(!$xdtExe){\n Write-Output 'Downloading xdt since it was not found in the tools folder'\n # nuget install SlowCheetah.Xdt -Prerelease -OutputDirectory toolsDir\\\n $nugetInstallCmdArgs = @('install','SlowCheetah.Xdt','-Prerelease','-OutputDirectory',(Resolve-Path $toolsDir).ToString())\n\n Write-Output ('Calling nuget.exe to download SlowCheetah.Xdt with the following args: [{0} {1}]' -f $nugetDestPath, ($nugetInstallCmdArgs -join ' '))\n &($nugetDestPath) $nugetInstallCmdArgs\n\n $xdtExe = (Get-ChildItem -Path $toolsDir -Include 'SlowCheetah.Xdt.exe' -Recurse) | Select-Object -First 1\n\n if(!$xdtExe){\n throw ('SlowCheetah.Xdt not found')\n }\n\n # copy the xdt assemlby if the xdt directory is missing it\n $xdtDllExpectedPath = (Join-Path $xdtExe.Directory.FullName 'Microsoft.Web.XmlTransform.dll')\n\n if(!(Test-Path $xdtDllExpectedPath)){\n # copy the xdt.dll next to the slowcheetah .exe\n $xdtDll = (Get-ChildItem -Path $toolsDir -Include 'Microsoft.Web.XmlTransform.dll' -Recurse) | Select-Object -First 1\n\n if(!$xdtDll){\n\t\t throw 'Microsoft.Web.XmlTransform.dll not found'\n\t\t}\n\n Copy-Item -Path $xdtDll.Fullname -Destination $xdtDllExpectedPath\n }\n}\n\n$cmdArgs = @((Resolve-Path $sourceFile).ToString(),\n (Resolve-Path $transformFile).ToString(),\n (Resolve-Path $destFile).ToString())\n\nWrite-Output ('Calling slowcheetah.xdt.exe with the args: [{0} {1}]' -f $xdtExe, ($cmdArgs -join ' '))\n&($xdtExe) $cmdArgs\n",
"Octopus.Action.Script.ScriptFileName": null,
"Octopus.Action.Package.NuGetFeedId": null,
"Octopus.Action.Package.NuGetPackageId": null
},
"Category": "XML",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/xml-transform-using-xdt.json",
"Website": "/step-templates/569a5f1b-bb57-491a-9c4e-a6d6e44e6b26",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Wednesday, August 24, 2016