2011-01-07 4 views
0

Я получил структуру каталогов, как это:Распаковка Строка с Phing

plugins (directory) 
- file1.php 
- file1.xml 
- file2.php 
- file2.xml 
- file3.php 
- file3.xml 
... 

Что мне нужно, это структура каталогов, как это:

plugins (directory) 
- file1 (directory) 
-- file1.php 
-- file1.xml 
- file2 (directory) 
-- file2.php 
-- file2.xml 
- file3 (directory) 
-- file3.php 
-- file3.xml 
... 

Я пытаюсь для того чтобы достигнуть, что с Phing (имеет быть Phing), как это:

<foreach param="file" absparam="absfilename" target="constructplugins"> 
    <fileset dir="${dir.root}/plugins/"> 
    <include name="*.php"/> 
    </fileset> 
</foreach> 

<target name="constructplugins" description="constructplugins"> 
<mkdir dir="${dir.tmp}/build/plugins/${file}" /> 
<copy file="${absfilename}" todir="${dir.tmp}/build/plugins/${file}" /> 
</target> 

как вы уже видите я получаю direcory имя как «file1.php». Я не знаю, как отрезать «.php», чтобы создать правильный каталог, так как здесь не работают phing-mappers. И я также не знаю, как скопировать xml-файл. Это должно быть общим, а сборка выполняется под окнами xp.

Любая помощь приветствуется.

ответ

2

Я не проверял это, но это должно быть возможно с помощью «PhpEvalTask».

<foreach param="file" absparam="absfilename" target="constructplugins"> 
    <fileset dir="${dir.root}/plugins/"> 
    <include name="*.php"/> 
    </fileset> 
</foreach> 

<target name="constructplugins" description="constructplugins"> 
    <php expression="preg_replace('/\\.[^.\\s]{3,4}$/', '', ${file})" returnProperty="filename"/> 
    <mkdir dir="${dir.tmp}/build/plugins/${filename}" /> 
    <copy file="${absfilename}" todir="${dir.tmp}/build/plugins/${filename}/${file}" /> 
</target> 

Возможно, я проведу его позже.