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


<dsl-extension kind="buildStep" type="jb.nuget.installer" generateDslJar="true">
    <class name="NuGetInstallerStep">
        <description>
            A [NuGet installer step](https://confluence.jetbrains.com/display/TCDL/NuGet+Installer) to run nuget restore command
        </description>
    </class>
    <function name="nuGetInstaller">
        <description>
            Adds a [NuGet installer step](https://confluence.jetbrains.com/display/TCDL/NuGet+Installer) to run nuget restore command
            @see NuGetInstallerStep
        </description>
    </function>
    <params>
        <param name="nuget.path" dslName="toolPath">
            <description>Specify path to NuGet.exe.</description>
        </param>
        <param name="sln.path" dslName="projects">
            <description>Specify the location of a solution or a packages.config file.</description>
        </param>
        <param name="nuget.use.restore" dslName="mode" type="compound">
            <description>
                Select NuGet.exe restore or NuGet.exe install command to restore packages
            </description>
            <option name="install" value="install">
                <param name="nuget.excludeVersion" dslName="excludeVersion" type="boolean" trueValue="true" falseValue="">
                    <description>Exclude version from package folder names</description>
                </param>
            </option>
        </param>
        <param name="nuget.noCache" dslName="noCache" type="boolean" trueValue="true" falseValue="">
            <description>Disable looking up packages from local machine cache.</description>
        </param>
        <param name="nuget.sources" dslName="sources">
            <description>Specifies NuGet package sources to use during the restore.</description>
        </param>
        <param name="nuget.restore.commandline" dslName="args">
            <description>Enter additional parameters to use when calling nuget pack command.</description>
        </param>
        <param name="nuget.updatePackages" dslName="updatePackages" type="compound">
            <description>
                Uses the NuGet update command to update all packages under solution
            </description>
            <option name="updateParams" value="">
                <param name="nuget.excludeVersion" dslName="excludeVersion" type="boolean" trueValue="true" falseValue="">
                    <description>Exclude version from package folder names</description>
                </param>
                <param name="nuget.updatePackages.mode" dslName="mode" type="UpdateMode">
                    <description>
                        Select how to update packages: via a call to nuget update SolutionFile.sln or via calls to nuget update packages.config
                        @see UpdateMode
                    </description>
                </param>
                <param name="nuget.updatePackages.include.prerelease" dslName="includePreRelease" type="boolean" trueValue="true" falseValue="">
                    <description>Include pre-release packages.</description>
                </param>
                <param name="nuget.updatePackages.safe" dslName="useSafe" type="boolean" trueValue="true" falseValue="">
                    <description>Perform safe update.</description>
                </param>
                <param name="nuget.update.commandline" dslName="args">
                    <description>Enter additional parameters to use when calling nuget update command.</description>
                </param>
            </option>
        </param>
    </params>
    <types>
        <enum name="UpdateMode">
            <description>
                Update mode
            </description>
            <option name="SolutionFile" value="sln"/>
            <option name="PackagesConfig" value="perConfig"/>
        </enum>
    </types>
  <examples>
    <example>
      <description>
        Installs all NuGet packages referenced in the Visual Studio solution file "my_solution.sln" including the pre-release packages.
        Uses the default NuGet tool version installed on the TeamCity server.
      </description>
      <code>
        nuGetInstaller {
          toolPath = "%teamcity.tool.NuGet.CommandLine.DEFAULT%"
          projects = "my_solution.sln"
          updatePackages = updateParams {
            includePreRelease = true
          }
        }
      </code>
    </example>
    <example>
      <description>
        Installs all NuGet packages referenced in the Visual Studio solution file "my_solution.sln".
        Uses a custom path to the NuGet executable.
      </description>
      <code>
        nuGetInstaller {
          toolPath = "&lt;path to NuGet executable on agent>"
          projects = "my_solution.sln"
        }
      </code>
    </example>
  </examples>
</dsl-extension>
