Search code examples
phpphing

exec a command on each file in a phing target


How can I execute a target action in phing on each file of a fileset target? For example:

<exec command="cat {$filepath}">
  <fileset dir=".">
    <include name="*.php">
  </fileset>
</exec>

Solution

  • You can use the foreach task with filesets, e.g.:

    <?xml version="1.0" encoding="utf-8"?>
    <project name="cat-fileset" basedir="." default="iterate">
        <target name="iterate">
            <foreach param="fname" absparam="abs-fname" target="cat">
                <fileset dir="${project.basedir}">
                    <include name="*.php" />
                </fileset>
            </foreach>
        </target>    
        <target name="cat">
            <exec command="cat ${abs-fname}" 
                escape="false"
                checkreturn="true"
                passthru="true" />
        </target>
    </project>
    

    Note that this feature was implemented in version 2.4.0 of Phing