| <?xml version="1.0" encoding="UTF-8"?>
<project name="PlantUML client" default="help">
  <target name="setup" depends="composer:install,plantuml:generate"/>
  <target name="qa" depends="composer:normalize,composer:validate,phpstan:analyze,phpunit:test"/>
  <target name="phpunit:test" description="Run phpunit tests">
    <autoloader autoloaderpath="vendor/autoload.php"/>
    <phpunit configuration="phpunit.xml">
      <formatter type="plain" usefile="false"/>
      <batchtest>
        <fileset dir="tests">
          <include name="**/*Test.php"/>
        </fileset>
      </batchtest>
    </phpunit>
  </target>
  <target name="plantuml:generate" description="Generate images from *.puml diagrams">
    <exec executable="plantuml" passthru="true" checkreturn="true">
      <arg path="docs/images/*.puml"/>
      <arg value="-tsvg"/>
      <arg value="-nometadata"/>
    </exec>
    <exec executable="plantuml" passthru="true" checkreturn="true">
      <arg path="docs/images/*.puml"/>
      <arg value="-tpng"/>
      <arg value="-nometadata"/>
    </exec>
  </target>
  <target name="composer:install" description="Install dependencies">
    <composer command="install">
      <arg value="--no-interaction"/>
      <arg value="--prefer-dist"/>
      <arg value="--ansi"/>
    </composer>
  </target>
  <target name="composer:normalize" description="Auto-format composer.json">
    <composer command="normalize">
      <arg value="--no-interaction"/>
      <arg value="--ansi"/>
    </composer>
  </target>
  <target name="composer:validate" description="Validates composer.json">
    <composer command="validate">
      <arg value="--no-interaction"/>
      <arg value="--strict"/>
      <arg value="--ansi"/>
    </composer>
  </target>
  <target name="phpstan:analyze" description="Analyse at max level">
    <exec executable="vendor/bin/phpstan" passthru="true" checkreturn="true">
      <arg line="--level=max"/>
      <arg value="analyze"/>
      <arg path="src"/>
      <arg value="--no-progress"/>
      <arg value="--ansi"/>
    </exec>
  </target>
  <target name="mkdocs:serve" depends="plantuml:generate" description="Run the builtin development server">
    <exec executable="mkdocs" passthru="true" checkreturn="true">
      <arg value="serve"/>
    </exec>
  </target>
  <target name="mkdocs:gh-deploy" depends="plantuml:generate" description="Deploy documentation to GitHub Pages">
    <exec executable="mkdocs" passthru="true" checkreturn="true">
      <arg value="gh-deploy"/>
    </exec>
  </target>
  <target name="help">
    <visualizer/>
    <exec executable="xdg-open" spawn="true">
      <arg file="build.png"/>
    </exec>
  </target>
</project>
 |