﻿<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Run">

  <Import Project="C:\Program Files\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

  <PropertyGroup>
    <Environment>Test</Environment>
    <OutputFolder>Output</OutputFolder>
    <CompilationDebug />
    <CustomErrorsMode />
    <ContentEditorsEmail />
    <AdministratorsEmail />
  </PropertyGroup>

  <PropertyGroup>
    <CompilationDebugXPath>configuration/system.web/compilation/@debug</CompilationDebugXPath>
    <CustomErrorsModeXPath>configuration/system.web/customErrors/@mode</CustomErrorsModeXPath>
    <ContentEditorsEmailXPath>configuration/appSettings/add[@key='ContentEditorsEmail']/@value</ContentEditorsEmailXPath>
    <AdministratorsEmailXPath>configuration/appSettings/add[@key='AdministratorsEmail']/@value</AdministratorsEmailXPath>
  </PropertyGroup>
  
  <Target Name="Run">
    <CallTarget Targets="Compile" />
    <CallTarget Targets="Publish" />
    <CallTarget Targets="SetConfig" />
  </Target>

  <Target Name="Clean">
    <ItemGroup>
      <BinFiles Include="bin\*.*" />
    </ItemGroup>
    <Delete Files="@(BinFiles)" />
  </Target>

  <Target Name="Compile" DependsOnTargets="Clean">
    <MSBuild Projects="BuildDemoSite.csproj" />
  </Target>

  <Target Name="Publish">
    <RemoveDir Directories="$(OutputFolder)" ContinueOnError="true" />
    <ItemGroup>
      <Pages Include="**\*.aspx" />
      <Binaries Include="bin\*.dll" />
    </ItemGroup>
    <Copy SourceFiles ="@(Pages)" DestinationFolder="$(OutputFolder)\%(RecursiveDir)" />
    <Copy SourceFiles ="@(Binaries)" DestinationFolder="$(OutputFolder)\bin" />
    <Copy SourceFiles ="Web.config" DestinationFolder="$(OutputFolder)" />
  </Target>

  <Target Name="SetConfig" DependsOnTargets="GetConfig">
    <XmlUpdate XPath="$(CompilationDebugXPath)"
               XmlFileName="$(OutputFolder)\web.config"
               Value="$(CompilationDebug)" />
    <XmlUpdate XPath="$(CustomErrorsModeXPath)"
               XmlFileName="$(OutputFolder)\web.config"
               Value="$(CustomErrorsMode)" />
    <XmlUpdate XPath="$(ContentEditorsEmailXPath)"
               XmlFileName="$(OutputFolder)\web.config"
               Value="$(ContentEditorsEmail)" />
    <XmlUpdate XPath="$(AdministratorsEmailXPath)"
               XmlFileName="$(OutputFolder)\web.config"
               Value="$(AdministratorsEmail)" />
  </Target>

  <Target Name="GetConfig">
    <XmlRead XPath="$(CompilationDebugXPath)" XmlFileName="$(Environment).config">
      <Output TaskParameter="Value" PropertyName="CompilationDebug" />
    </XmlRead>
    <XmlRead XPath="$(CustomErrorsModeXPath)" XmlFileName="$(Environment).config">
      <Output TaskParameter="Value" PropertyName="CustomErrorsMode" />
    </XmlRead>
    <XmlRead XPath="$(ContentEditorsEmailXPath)" XmlFileName="$(Environment).config">
      <Output TaskParameter="Value" PropertyName="ContentEditorsEmail" />
    </XmlRead>
    <XmlRead XPath="$(AdministratorsEmailXPath)" XmlFileName="$(Environment).config">
      <Output TaskParameter="Value" PropertyName="AdministratorsEmail" />
    </XmlRead>
  </Target>
  
</Project>