<?xml version="1.0" encoding="utf-8" ?>
<project name="Nitriq" 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="nitriq" />
  <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="project.name" value="__SOLUTION_NAME_WITHOUT_SLN_EXTENSION__" overwrite="false" />
  <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.nitriq" value="C:${path.separator}Program Files (x86)${path.separator}NimblePros${path.separator}Nitriq Console + Pro${path.separator}Nitriq.Console.exe" overwrite="false" />
  <property name="dirs.nitriq_results" value="${dirs.build_artifacts}${path.separator}nitriq" />
  <property name="files.nitriq_project" value="${path::get-full-path(dirs.current)}${path.separator}nitriq.nitriqProj" />
  <property name="files.nitriq_queries" value="${path::get-full-path(dirs.current)}${path.separator}nitriq.nq" />
  <property name="file.html.nitriq_results" value="${dirs.nitriq_results}${path.separator}${project.name}.nitriq-results.html" />
  
  <property name="is.replaced" value="false" />
  <property name="fail.build.on.error" value="false" />

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

  <target name="precheck" if="${file::exists(app.nitriq)}">
    <echo level="Warning" message="Attempting to locate console edition of Nitriq." />
    <property name="app.nitriq" value="C:${path.separator}Program Files (x86)${path.separator}NimblePros${path.separator}Nitriq Console + Pro\Nitriq.Console.exe" if="${not file::exists(app.nitriq)}" />
    <property name="app.nitriq" value="C:${path.separator}Program Files${path.separator}NimblePros\Nitriq Console + Pro - Nitriq.Console.exe" if="${not file::exists(app.nitriq)}" />
    <call target="run_tasks" if="${file::exists(app.nitriq) and file::exists(files.nitriq_project)}" />
  </target>
  
  <target name="run_tasks">
    <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="nitriq"
          description="Using Nitriq to Analyze project for quality indicators."
          if="${file::exists(app.nitriq)}" />

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

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

    <exec program="${app.nitriq}" workingdir="${dirs.build.code}">
      <arg line="${files.nitriq_project} ${files.nitriq_queries} ${file.html.nitriq_results}" />
    </exec>
  </target>

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