﻿<Project>
  <!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (thee
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
  <PropertyGroup>
    <AssemblyName>Org.Apache.REEF.Client</AssemblyName>
    <Description>Client for REEF.NET</Description>
    <PackageTags>REEF Client</PackageTags>
    <!-- Disable default embedded resources as we override this in the project -->
    <EnableDefaultEmbeddedResourceItems>False</EnableDefaultEmbeddedResourceItems>
  </PropertyGroup>
  <Import Project="..\build.DotNetLibrary.props" />
  <PropertyGroup>
    <TempResxFile Condition="$(TempResxFile) == ''">Resources.DotNet.resx</TempResxFile>
  </PropertyGroup>
  <ItemGroup>
    <EmbeddedResource Include="$(TempResxFile)">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Avro.Core" Version="$(AvroVersion)" />
    <PackageReference Include="System.Reactive.Interfaces" Version="$(SystemReactiveVersion)" />
    <PackageReference Include="EnterpriseLibrary.TransientFaultHandling.Core" Version="$(TransientFaultHandlingVersion)" />
  </ItemGroup>
  <!-- TODO[JIRA REEF-1888] Remove the conditional, but keep the item group -->
  <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
    <PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
  </ItemGroup>
  <!-- TODO[JIRA REEF-1888] This item group will not be needed when only .netcore is targeted. -->
  <ItemGroup Condition="'$(TargetFramework)' == 'net452' Or '$(TargetFramework)' == 'net46'">
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.IO.Compression" />
    <Reference Include="System.IO.Compression.FileSystem" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Net.Http.WebRequest" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>

  <!-- Project Reference conditionals allow for targeting specific projects based upon the target framework. -->
  <ItemGroup Condition="'$(TargetFramework)' == 'net452'">
    <ProjectReference Include="..\Org.Apache.REEF.Bridge\Org.Apache.REEF.Bridge.DotNet.vcxproj" PrivateAssets="All" />
  </ItemGroup>
  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
    <ProjectReference Include="..\Org.Apache.REEF.Bridge.CLR\Org.Apache.REEF.Bridge.CLR.DotNet.csproj" PrivateAssets="All"/>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Common\Org.Apache.REEF.Common.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Driver\Org.Apache.REEF.Driver.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Network\Org.Apache.REEF.Network.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Examples\Org.Apache.REEF.Examples.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.IO\Org.Apache.REEF.IO.DotNet.csproj" />
  </ItemGroup>
  <Import Project="..\build.DotNet.targets" />
  <!--
       ########################################################################
         ReWrite client resx to point to correct version of jars
       ######################################################################## 
  -->
  <!--A Task that extracts the version from the pom in a given folder.-->
  <UsingTask TaskName="UpdateClientResources" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <SnapshotNumber />
      <ProjectFolder Required="true" />
      <DebugOrRelease Required="true" />
      <resxOutputPath Required="true" />
    </ParameterGroup>
    <Task>
      <Reference Include="System.Xml" />
      <Reference Include="System.Xml.Linq" />
      <Using Namespace="System" />
      <Using Namespace="System.IO" />
      <Using Namespace="System.Xml" />
      <Using Namespace="System.Linq" />
      <Using Namespace="System.Xml.Linq" />
      <Code Type="Fragment" Language="cs">
        <![CDATA[
      var Version = XDocument.Load(Path.Combine(ProjectFolder, "pom.xml")).Descendants()
        .Where(x => x.Name.ToString().Contains("version"))
        .FirstOrDefault().Value;
      var snapshortNumberAsString = ($(SnapshotNumber) >= 0 && $(SnapshotNumber) <=9) ? "0" + $(SnapshotNumber) : $(SnapshotNumber).ToString();
      var reefVersion = Version;

      var srcDir = @"lang\cs\Org.Apache.REEF.Client\Properties";
      var binDir = @"lang\cs\bin\.netcore";
      var resxInputPath  = Path.Combine(ProjectFolder, srcDir, "Resources.DotNet.xml");      
      var resourceDir = Path.Combine(ProjectFolder, binDir, DebugOrRelease, "Org.Apache.REEF.Bridge.JAR", "net452");
      var clrDriverDir = Path.Combine(ProjectFolder, binDir, DebugOrRelease, "Org.Apache.REEF.Bridge");
      var byteArrayType = ";System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
      var jarRest = reefVersion + "-shaded.jar" + byteArrayType;

      var dllResources = new Dictionary<string,string>();
      dllResources.Add("reef_bridge_client", resourceDir + @"\reef-bridge-client-" + jarRest);
      dllResources.Add("reef_bridge_driver", resourceDir + @"\reef-bridge-java-" + jarRest);
      dllResources.Add("evaluator", resourceDir + "Org.Apache.REEF.Evaluator.exe" + byteArrayType);
      dllResources.Add("reef_clrdriver", clrDriverDir + @"\Org.Apache.REEF.Bridge.exe" + byteArrayType);
      dllResources.Add("ClientJarFullName", "reef-bridge-client-" + reefVersion + "-shaded.jar");
      dllResources.Add("DriverJarFullName", "reef-bridge-java-" + reefVersion + "-shaded.jar");
      dllResources.Add("ClrDriverFullName", "Org.Apache.REEF.Bridge.exe");
      
      XElement root = XElement.Load(resxInputPath);
      var resources = root.Descendants().Where(x => x.Name.LocalName == "data").ToList();
      foreach (var resource in resources)
      {
          var resourceName = resource.Attribute("name").Value;
          string replaceValue;
          if (dllResources.TryGetValue(resourceName, out replaceValue))
          {
              var resourceValue = resource.Descendants().Where(x => x.Name.LocalName == "value").FirstOrDefault();
              if (resourceValue != null)
              {
                  resourceValue.Value = replaceValue;
              }
          }
      }
      var settings = new XmlWriterSettings
      {
          Indent = true,
          IndentChars = "  ",
          NewLineChars = "\r\n",
          NewLineHandling = NewLineHandling.Replace
      };
      (new FileInfo(resxOutputPath)).Directory.Create();
      using (var wr = XmlWriter.Create(resxOutputPath, settings))
      {
          root.WriteTo(wr);
      }
        ]]>
      </Code>
    </Task>
  </UsingTask>
  <!--
      A Target that reWrites client resx to point to correct version of jars
    -->
  <Target Name="RewriteClientResources" BeforeTargets="BeforeBuild">
    <Message Text="Generating temporary resx file" Importance="high" />
    <UpdateClientResources ProjectFolder="$(REEF_Source_Folder)" DebugOrRelease="$(Configuration)" resxOutputPath="$(TempResxFile)">
    </UpdateClientResources>
  </Target>
  <Target Name="CopyJarFiles" BeforeTargets="RewriteClientResources">
    <MSBuild Targets="Build" BuildInParallel="$(BuildInParallel)" Properties="Chip=$(Chip);Lang=$(Lang)" Projects="@(ProjectFile)" />
    <ItemGroup>
      <MySourceFiles Include="$(BinDir)$(Configuration)\Org.Apache.REEF.Bridge.JAR\$(TargetFramework)\*.jar" />
    </ItemGroup>
    <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(TargetDir)%(Filename)%(Extension)')" />
  </Target>
  <!--
  <Target Name="AfterBuild">
    <Delete Files="$(TempResxFile)" />
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
  </Target>
  <Target Name="BeforeBuild" DependsOnTargets="RewriteClientResources">
  </Target>
  -->
</Project>
