<?xml version="1.0" encoding="utf-8" ?>
<project name="NDepend" default="go">
  <!-- Project UppercuT - http://projectuppercut.org -->
  <!-- DO NOT EDIT THIS FILE - Add custom tasks in BuildTasks.Custom\Analyzers folder with file by the same name - find out more at http://uppercut.pbwiki.com -->
  <property name="build.config.settings" value="__NONE__" overwrite="false" />
  <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
  <property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
  <include buildfile="..${path.separator}csharp.functions" />
  <property name="file.current.no_extension" value="ndepend" />
  <property name="dirs.current" value="${directory::get-current-directory()}" />  
  <property name="dirs.current.file" value="${directory::get-parent-directory(project::get-buildfile-path())}" />  
  <property name="folder.build_scripts" value="build" overwrite="false" />
  <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
  <property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${folder.build_scripts_custom}${path.separator}analyzers" />
  <property name="folder.code_build" value="build_output" overwrite="false" />
  <property name="dirs.build" value="${dirs.current}${path.separator}${folder.code_build}" />
  <property name="folder.app.drop" value="${project.name}" overwrite="false" />
  <property name="dirs.build.code" value="${dirs.build}${path.separator}${folder.app.drop}" overwrite="false" />
  <property name="folder.build_artifacts" value="build_artifacts" overwrite="false" />
  <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}${path.separator}${folder.build_artifacts}" />
  <property name="app.ndepend" value="C:${path.separator}Program Files${path.separator}NDepend${path.separator}NDepend.Console.exe" overwrite="false" />
  <property name="dirs.ndepend_results" value="${dirs.build_artifacts}${path.separator}ndepend" />
  <property name="files.ndepend_config" value="${path::get-full-path(dirs.current)}${path.separator}NDepend.xml" />

  <property name="is.replaced" value="false" />
  <property name="fail.build.on.error" value="false" />

  <target name="go" depends="run_tasks" if="${file::exists(app.ndepend)}" />

  <target name="run_tasks" if="${file::exists(app.ndepend)}">
    <echo level="Warning" message="" />
    <echo level="Warning" message="====================" />
    <echo level="Warning" message="${project::get-name()}" />
    <echo level="Warning" message="====================" />
    <call target="prepare" if="${target::exists('prepare')}" />
    <customExtension extends="${project::get-buildfile-path()}" type="pre" failonerror="${fail.build.on.error}" />
    <customExtension extends="${project::get-buildfile-path()}" type="replace" failonerror="${fail.build.on.error}" />
    <call target="run_normal_tasks" if="${not is.replaced}" />
    <customExtension extends="${project::get-buildfile-path()}" type="post" failonerror="${fail.build.on.error}" />
  </target>

  <target name="run_normal_tasks"
          depends="ndepend"
          description="Using NDepend to Analyze project for quality indicators."
          if="${file::exists(app.ndepend)}" />

  <target name="prepare">
    <echo level="Warning" message="Removing and adding ${dirs.ndepend_results}."/>
    <delete dir="${dirs.ndepend_results}" failonerror="false" />
    <mkdir dir="${dirs.ndepend_results}" />
  </target>

  <target name="ndepend" depends="prepare" if="${file::exists(app.ndepend)}">
    <echo level="Warning" message="Attempting to run NDepend at ${app.ndepend} for file ${files.ndepend_config}." />

    <exec program="${app.ndepend}">
      <arg line="${files.ndepend_config} /OutDir ${dirs.ndepend_results} /InDirs ${path::get-full-path(dirs.build.code)} C:${path.separator}WINDOWS${path.separator}Microsoft.NET${path.separator}Framework${path.separator}v2.0.50727 C:${path.separator}WINDOWS${path.separator}Microsoft.NET${path.separator}Framework${path.separator}v3.0 C:${path.separator}WINDOWS${path.separator}Microsoft.NET${path.separator}Framework${path.separator}v3.5" />
      <!--  /EmitVisualNDependBinXml -->
    </exec>
  </target>

  <target name="open_results">
    <echo level="Warning" message="Opening results - ${path::get-full-path(dirs.ndepend_results) + path.separator + 'NDependReport.html'}" />
    <results display="${path::get-full-path(dirs.ndepend_results) + path.separator + 'NDependReport.html'}" /> 
  </target>
  
</project>