~travis-plummer/openstack-cli-powershell/master

« back to all changes in this revision

Viewing changes to WidgetInc.Openstack.Client.Powershell/.nuget/NuGet.targets

  • Committer: Monty Taylor
  • Date: 2015-10-17 20:03:56 UTC
  • Revision ID: git-v1:803406e7e09f6f4199f7a92f11f2904ad1d6cc15
Retire stackforge/openstack-cli-powershell

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?xml version="1.0" encoding="utf-8"?>
2
 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
 
    <PropertyGroup>
4
 
        <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
5
 
 
6
 
        <!-- Enable the restore command to run before builds -->
7
 
        <RestorePackages Condition="  '$(RestorePackages)' == '' ">false</RestorePackages>
8
 
 
9
 
        <!-- Property that enables building a package from a project -->
10
 
        <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
11
 
 
12
 
        <!-- Determines if package restore consent is required to restore packages -->
13
 
        <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
14
 
 
15
 
        <!-- Download NuGet.exe if it does not already exist -->
16
 
        <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
17
 
    </PropertyGroup>
18
 
 
19
 
    <ItemGroup Condition=" '$(PackageSources)' == '' ">
20
 
        <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
21
 
        <!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
22
 
        <!--
23
 
            <PackageSource Include="https://www.nuget.org/api/v2/" />
24
 
            <PackageSource Include="https://my-nuget-source/nuget/" />
25
 
        -->
26
 
    </ItemGroup>
27
 
 
28
 
    <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
29
 
        <!-- Windows specific commands -->
30
 
        <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
31
 
    </PropertyGroup>
32
 
 
33
 
    <PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
34
 
        <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
35
 
        <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
36
 
    </PropertyGroup>
37
 
 
38
 
    <PropertyGroup>
39
 
        <PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
40
 
        <PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
41
 
    </PropertyGroup>
42
 
 
43
 
    <PropertyGroup>
44
 
      <PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
45
 
      <PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
46
 
    </PropertyGroup>
47
 
    
48
 
    <PropertyGroup>
49
 
        <!-- NuGet command -->
50
 
        <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
51
 
        <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
52
 
 
53
 
        <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
54
 
        <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
55
 
 
56
 
        <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
57
 
 
58
 
        <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
59
 
        <NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
60
 
 
61
 
        <PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
62
 
        <PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
63
 
 
64
 
        <!-- Commands -->
65
 
        <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
66
 
        <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
67
 
 
68
 
        <!-- We need to ensure packages are restored prior to assembly resolve -->
69
 
        <BuildDependsOn Condition="$(RestorePackages) == 'true'">
70
 
            RestorePackages;
71
 
            $(BuildDependsOn);
72
 
        </BuildDependsOn>
73
 
 
74
 
        <!-- Make the build depend on restore packages -->
75
 
        <BuildDependsOn Condition="$(BuildPackage) == 'true'">
76
 
            $(BuildDependsOn);
77
 
            BuildPackage;
78
 
        </BuildDependsOn>
79
 
    </PropertyGroup>
80
 
 
81
 
    <Target Name="CheckPrerequisites">
82
 
        <!-- Raise an error if we're unable to locate nuget.exe  -->
83
 
        <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
84
 
        <!--
85
 
        Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
86
 
        This effectively acts as a lock that makes sure that the download operation will only happen once and all
87
 
        parallel builds will have to wait for it to complete.
88
 
        -->
89
 
        <MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
90
 
    </Target>
91
 
 
92
 
    <Target Name="_DownloadNuGet">
93
 
        <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
94
 
    </Target>
95
 
 
96
 
    <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">        
97
 
        <Exec Command="$(RestoreCommand)"
98
 
              Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
99
 
 
100
 
        <Exec Command="$(RestoreCommand)"
101
 
              LogStandardErrorAsError="true"
102
 
              Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
103
 
    </Target>
104
 
 
105
 
    <Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
106
 
        <Exec Command="$(BuildCommand)"
107
 
              Condition=" '$(OS)' != 'Windows_NT' " />
108
 
 
109
 
        <Exec Command="$(BuildCommand)"
110
 
              LogStandardErrorAsError="true"
111
 
              Condition=" '$(OS)' == 'Windows_NT' " />
112
 
    </Target>
113
 
 
114
 
    <UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
115
 
        <ParameterGroup>
116
 
            <OutputFilename ParameterType="System.String" Required="true" />
117
 
        </ParameterGroup>
118
 
        <Task>
119
 
            <Reference Include="System.Core" />
120
 
            <Using Namespace="System" />
121
 
            <Using Namespace="System.IO" />
122
 
            <Using Namespace="System.Net" />
123
 
            <Using Namespace="Microsoft.Build.Framework" />
124
 
            <Using Namespace="Microsoft.Build.Utilities" />
125
 
            <Code Type="Fragment" Language="cs">
126
 
                <![CDATA[
127
 
                try {
128
 
                    OutputFilename = Path.GetFullPath(OutputFilename);
129
 
 
130
 
                    Log.LogMessage("Downloading latest version of NuGet.exe...");
131
 
                    WebClient webClient = new WebClient();
132
 
                    webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
133
 
 
134
 
                    return true;
135
 
                }
136
 
                catch (Exception ex) {
137
 
                    Log.LogErrorFromException(ex);
138
 
                    return false;
139
 
                }
140
 
            ]]>
141
 
            </Code>
142
 
        </Task>
143
 
    </UsingTask>
144
 
</Project>