<?xml version="1.0" encoding="UTF-8"?>


<dsl-extension kind="buildStep" type="jetbrains_powershell" generateDslJar="true">
  <class name="PowerShellStep">
    <description>
      A [build step](https://www.jetbrains.com/help/teamcity/?PowerShell) running PowerShell script
    </description>
  </class>
  <function name="powerShell" yamlName="powershell">
    <description>
      Adds a [build step](https://www.jetbrains.com/help/teamcity/?PowerShell) running PowerShell script
      @see PowerShellStep
    </description>
  </function>
  <params>
    <param name="jetbrains_powershell_minVersion" dslName="minVersion" type="Version">
      <deprecated>This property allows to specify a limited number of versions, please use minRequiredVersion instead.</deprecated>
    </param>
    <param name="jetbrains_powershell_minVersion" dslName="minRequiredVersion">
      <description>
        A minimum required PowerShell version installed on a build agent
      </description>
    </param>
    <param name="jetbrains_powershell_bitness" dslName="platform" type="Platform">
      <description>
        A required platform bitness
        @see Platform
      </description>
    </param>
    <param name="jetbrains_powershell_edition" dslName="edition" type="Edition">
      <description>
        PowerShell edition to use
        @see Edition
      </description>
    </param>
    <param name="jetbrains_powershell_errorToError" dslName="formatStderrAsError" type="boolean" trueValue="true" falseValue="">
      <description>
        Specifies how the error output is handled. If set to true any output to stderr is handled as an error.
        By default any output to stderr is handled as a warning.
      </description>
    </param>
    <param name="teamcity.build.workingDir" dslName="workingDir" yamlName="working-directory">
      <description>
        [Build working directory](https://www.jetbrains.com/help/teamcity/?Build+Working+Directory) for ant script,
        specify it if it is different from the [checkout directory](https://www.jetbrains.com/help/teamcity/?Build+Checkout+Directory).
      </description>
    </param>
    <param name="jetbrains_powershell_script_mode" dslName="scriptMode" type="compound" mandatory="true">
      <description>
        PowerShell script execution mode
      </description>
      <option name="file" value="FILE">
        <description>
          Run a PowerShell script at the given path
        </description>
        <param name="jetbrains_powershell_script_file" dslName="path" mandatory="true">
          <description>
            A path to the script to run
          </description>
        </param>
      </option>
      <option name="script" value="CODE">
        <description>
          Run a PowerShell script with the given content
        </description>
        <param name="jetbrains_powershell_script_code" dslName="content" mandatory="true">
          <description>
            A PowerShell script content
          </description>
        </param>
      </option>
    </param>
    <param name="jetbrains_powershell_execution" dslName="scriptExecMode" type="ExecutionMode">
      <description>
        PowerShell execution mode
        @see ExecutionMode
      </description>
    </param>
    <param name="jetbrains_powershell_noprofile" dslName="noProfile" type="boolean" trueValue="true" falseValue="">
      <description>
        Whether the script should be executed with the -NoProfile added
      </description>
    </param>
    <param name="jetbrains_powershell_additionalArguments" dslName="args">
      <description>
        Additional arguments to be passed to PowerShell
      </description>
    </param>
    <param name="jetbrains_powershell_scriptArguments" dslName="scriptArgs">
      <description>
        Build parameters to be passed as arguments into the PowerShell script
      </description>
    </param>
  </params>
  <types>
    <enum name="Version">
      <option name="Any" value=""/>
      <option name="v1_0" value="1.0"/>
      <option name="v2_0" value="2.0"/>
      <option name="v3_0" value="3.0"/>
      <option name="v4_0" value="4.0"/>
      <option name="v5_0" value="5.0"/>
    </enum>
    <enum name="Platform">
      <description>
        A required platform bitness
      </description>
      <option name="x86" value="x86">
        <description>
          Require a 32-bit platform
        </description>
      </option>
      <option name="x64" value="x64">
        <description>
          Require a 64-bit platform
        </description>
      </option>
    </enum>
    <enum name="ExecutionMode">
      <description>
        PowerShell script execution mode
      </description>
      <option name="STDIN" value="STDIN">
        <description>
          Run script using the -Command argument
        </description>
      </option>
      <option name="PS1" value="PS1">
        <description>
          Run script with the -ExecutionPolicy ByPass argument to enable arbitrary scripts execution
        </description>
      </option>
    </enum>
    <enum name="Edition">
      <description>
        A PowerShell edition
      </description>
      <option name="Any" value="">
        <description>
          Use any edition
        </description>
      </option>
      <option name="Core" value="Core">
        <description>
          Open-source edition based on .Net Core, cross-platform, 64-bit only
        </description>
      </option>
      <option name="Desktop" value="Desktop">
        <description>
          Closed-source edition bundled with Windows, available only on Windows platforms.
        </description>
      </option>
    </enum>
  </types>
  <examples>
    <example>
      <description>
        A simple powershell script producing "Hello, World!" output to the build log.
      </description>
      <code>
        powerShell {
          scriptMode = script {
            content = "Write-Host 'Hello, World!'"
          }
        }
      </code>
    </example>
    <example>
      <description>
        Run a Powershell script with name "my_script.ps1" in the checkout directory.
        Use cross-platform "Core" edition of the Powershell.
      </description>
      <code>
        powerShell {
          edition = PowerShellStep.Edition.Core
          scriptMode = file {
            path = "my_script.ps1"
          }
        }
      </code>
    </example>
  </examples>
</dsl-extension>