<Project DefaultTargets = "Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <PropertyGroup>
	<CleanDependsOn>
		$(CleanDependsOn)
		CleanVectoDeploy
	</CleanDependsOn>
  </PropertyGroup>
  
    <UsingTask TaskName="Zip" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
  <ParameterGroup>
    <OutputFilename ParameterType="System.String" Required="true" />
    <Files ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
	<SourcePath ParameterType="System.String" Required="true"/>
	<DestinationPath ParameterType="System.String" Required="true"/>
  </ParameterGroup>
  <Task>
    <Reference Include="System.IO.Compression" />
    <Using Namespace="System.IO.Compression" />
    <Code Type="Fragment" Language="cs">
    <![CDATA[
      try
      {
        using (Stream zipStream = new FileStream(Path.GetFullPath(OutputFilename), FileMode.Create, FileAccess.Write))
        using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
        {
            foreach (ITaskItem fileItem in Files)
            {
                string filename = fileItem.ItemSpec;
                using (Stream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
				using (Stream fileStreamInZip = archive.CreateEntry(fileItem.ItemSpec.Replace(SourcePath, DestinationPath)).Open())
                    fileStream.CopyTo(fileStreamInZip);
            }
        }
        return true;
      }
      catch (Exception ex)
      {
        Log.LogErrorFromException(ex);
        return false;
      }
    ]]>
    </Code>
  </Task>
</UsingTask>

<Target Name="GenerateReleasenotesPDF" BeforeTargets="AfterBuild"  Condition="$(Configuration) == 'Deploy'">  
	<Message Text="Generating Release Notes PDF"/>
	<Exec Command="cscript &quot;$(solutiondir)documentation\user manual source\convertpptxtopdf.vbs&quot; &quot;$(solutiondir)documentation\user manual source\release notes vecto3.x.pptx&quot; &quot;$(solutiondir)documentation\user manual source\release notes vecto3.x.pdf&quot;"/>  
</Target>  
<Target Name="GenerateHelpHTML" BeforeTargets="AfterBuild"  Condition="$(Configuration) == 'Deploy'">  
	<Message Text="Generating Help"/>
	<Exec Command="&quot;$(solutiondir)documentation\user manual\convert.bat&quot;" WorkingDirectory="$(solutiondir)documentation\user manual"/>  
	<Exec Command="&quot;$(solutiondir)documentation\VectoHashingTool\convert.bat&quot;" WorkingDirectory="$(solutiondir)documentation\VectoHashingTool"/>  
</Target>  

<Target Name="BeforeBuild" Condition="$(Configuration) == 'Deploy' OR $(Configuration) == 'Release'">
	<ItemGroup>
		<VersionTemplates Include="$(SolutionDir)**\Version.tt"/>
	</ItemGroup>
	<Exec Command="&quot;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\TextTransform.exe&quot; &quot;%(VersionTemplates.Identity)&quot;"/>
</Target>

<Target Name="AfterBuild" Condition="$(Configuration) == 'Deploy'">
	<ItemGroup>  
		<VectoCoreAssembly Include="$(OutputPath)VectoCore.dll" />  
		<VectoCommandLine Include="$(SolutionDir)VectoConsole\bin\Deploy\vectocmd.exe*"/>
		
		<GenericVehicles Include="$(SolutionDir)Generic Vehicles\**\*.*" Exclude="$(SolutionDir)**\*.vmod;$(SolutionDir)**\*.vsum;$(SolutionDir)**\*RSLT_*.xml;$(SolutionDir)**\*.pdf"/>
		<MissionProfiles Include="$(SolutionDir)VectoCore\VectoCore\Resources\Declaration\MissionCycles\**\*.*"/>
		<DeclarationData Include="$(SolutionDir)VectoCore\VectoCore\Resources\Declaration\**/*.csv" Exclude="$(SolutionDir)**\MissionCycles\**\*.*"/>
		<DeclarationData Include="$(SolutionDir)VectoCore\VectoCore\Resources\Declaration\**/*.vacc" Exclude="$(SolutionDir)**\MissionCycles\**\*.*"/>
		<VectoXSD Include="$(SolutionDir)VectoCore\VectoCore\Resources\XSD\**\*.*" Exclude="$(SolutionDir)**\*Engineering*"/>
		<VectoXMLExamples Include="$(SolutionDir)VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\*-sample.xml"/>
		<UserManual Include="$(SolutionDir)Documentation\User Manual\help.html"/>
		<UserManual Include="$(SolutionDir)Documentation\VectoHashingTool\HashingToolHelp.html"/>
		<UserManual Include="$(SolutionDir)Documentation\XML\*.pdf"/>
		<UserManual Include="$(SolutionDir)Documentation\XML\VectoParameters.html"/>
		<UserManual Include="$(SolutionDir)Documentation\User Manual Source\JIRA Quick Start Guide.pdf"/>
		<UserManual Include="$(SolutionDir)Documentation\Cdv_Generator_VECTO3.2.xlsx"/>
		<ReleaseNotes Include="$(SolutionDir)Documentation\User Manual Source\Release Notes Vecto3.x.pdf"/>
		
		<HashingTool Include="$(SolutionDir)HashingTool\bin\Deploy\HashingTool.exe"/>
		<HashingTool Include="$(SolutionDir)VectoCommon\VectoHashing\bin\Deploy\VectoHashing.XML"/>
		<HashingTool Include="$(SolutionDir)HashingCmd\bin\Deploy\hashingcmd.exe"/>
	</ItemGroup>
	
	<Message Text="@(VectoCommandLine)"/>
	<Copy SourceFiles="@(VectoCommandLine)" DestinationFolder="$(OutputPath)"/>
	<Copy SourceFiles="@(HashingTool)" DestinationFolder="$(OutputPath)"/>
	<Copy SourceFiles="@(GenericVehicles)" DestinationFiles="@(GenericVehicles->'$(OutputPath)\Generic Vehicles\%(RecursiveDir)%(Filename)%(Extension)')" />
	<Copy SourceFiles="@(DeclarationData)" DestinationFolder="$(OutputPath)\Declaration" />
	<Copy SourceFiles="@(MissionProfiles)" DestinationFolder="$(OutputPath)\Mission Profiles" />
	<Copy SourceFiles="@(VectoXMLExamples)" DestinationFolder="$(OutputPath)\XML\Examples" />
	<Copy SourceFiles="@(VectoXSD)" DestinationFolder="$(OutputPath)\XML\XSD" />
	<Copy SourceFiles="@(UserManual)" DestinationFolder="$(OutputPath)\User Manual" />
	<Copy SourceFiles="@(ReleaseNotes)" DestinationFiles="$(OutputPath)\User Manual\Release Notes.pdf" />
	<Copy SourceFiles="$(SolutionDir)\Documentation\User Manual Source\README for Mission Profiles Directory.txt" DestinationFiles="$(OutputPath)\Mission Profiles\!! README !!.TXT"/>
	<Copy SourceFiles="$(SolutionDir)\Documentation\User Manual Source\README for Declaration Directory.txt" DestinationFiles="$(OutputPath)\Declaration\!! README !!.TXT"/>
	<ItemGroup>
		<ZipFiles Include="$(OutputPath)Declaration\**\*.*" />
		<ZipFiles Include="$(OutputPath)Generic Vehicles\**\*.*" />
		<ZipFiles Include="$(OutputPath)Mission Profiles\**\*.*" />
		<ZipFiles Include="$(OutputPath)User Manual\**\*.*" />
		<ZipFiles Include="$(OutputPath)XML\**\*.*" />
	</ItemGroup>

	<GetAssemblyIdentity  AssemblyFiles="@(VectoCoreAssembly)">
		<Output  TaskParameter="Assemblies"  ItemName="VectoAssemblyIdentities"  />
	</GetAssemblyIdentity>
	<ItemGroup>
		<ZipFiles Include="$(OutputPath)*.dll" />
		<ZipFiles Include="$(OutputPath)VECTO.exe*" />
		<ZipFiles Include="$(OutputPath)vectocmd.exe*"/>
		<ZipFiles Include="$(OutputPath)HashingTool.exe*"/>
		<ZipFiles Include="$(OutputPath)hashingcmd.exe*"/>
	</ItemGroup>
	<PropertyGroup>
		<CurrentDate>$([System.DateTime]::Now.ToString(yyy_MM_dd))</CurrentDate>
	</PropertyGroup>
	<Message Text="Creating ZIP, CurrentDate: $(CurrentDate)"/>
	<Zip OutputFilename="$(OutputPath)$(CurrentDate)-VECTO-%(VectoAssemblyIdentities.Version).zip" Files="@(ZipFiles)" SourcePath="$(OutputPath)" DestinationPath="$(CurrentDate)-VECTO-%(VectoAssemblyIdentities.Version)\"/>
</Target>

<Target Name="CleanVectoDeploy" Condition="$(Configuration) == 'Deploy'">
	<ItemGroup>
		<CustomFilesToClean Include="$(OutputPath)Declaration\**\*.*" />
		<CustomFilesToClean Include="$(OutputPath)Generic Vehicles\**\*.*" />
		<CustomFilesToClean Include="$(OutputPath)Mission Profiles\**\*.*" />
		<CustomFilesToClean Include="$(OutputPath)User Manual\**\*.*" />
		<CustomFilesToClean Include="$(OutputPath)XML\**\*.*" />
		<CustomFoldersToClean Include="%(CustomFilesToClean.RootDir)%(CustomFilesToClean.Directory)"/>
	</ItemGroup>
	<!-- <Message Text="@(CustomFilesToClean)" Importance="normal"/> -->
	<!-- <Message Text="@(CustomFoldersToClean)" Importance="normal"/> -->
	<Delete Files="@CustomFilesToClean"/>
	<RemoveDir Directories="@(CustomFoldersToClean)"/>
</Target>

</Project>