如何列出 Phing 中的隐藏目标
How to list hidden targets in Phing
我的build.xml有134个目标,其中大部分是隐藏的(hidden="true")。有没有办法从命令行列出所有目标?目标定义有时会分成多行,我通常对属性使用双引号字符。我在 Debian 上 运行 这个,排序目标的荣誉 and/or 也显示描述。 :-)
示例:
<target name="example1" hidden="false" />
<target name="example3" hidden="true" />
<target
description="Ipsum lorem"
hidden="true"
name='example3'
>
<phingcall target="example1" />
</target>
你不能用 phing 本身。如果目标设置为 "hidden".
,代码将跳过显示
我们无法使用 Phing 执行此操作,但我们可以 在 Phing 中执行此操作。可能有比这更干净、更好的方法,但这可行——假设所有其他属性都用双引号引起来(即 just 通过上面的示例#3)
<target name="list_all" hidden="false">
<property name="command" value="
cat ${phing.file.foo}
| perl -pe 's|^\s*||g'
| perl -0pe 's|\n([^<])| |gs'
| grep '<target'
| perl -pe "s|name='([^']*)'|name=\"\"|g"
| perl -pe 's|^<target(\s?)||'
| perl -pe 's|(.*)([ ]?)depends="([^"]*)"([ ]?)(.*)| |g'
| perl -pe 's|(.*)([ ]?)hidden="([^"]*)"([ ]?)(.*)| |g'
| perl -pe 's|.*description="([^"]*).*name="([^"]*).*|name="" description=""|g'
| perl -pe 's|name="([^"]*)"||g'
| perl -pe 's|description="([^"]*)"|[]|g'
| sort
| uniq
" override="true" />
<exec command="${command}" passthru="true" />
</target>
这些线是做什么的?
1)输出build.xml的内容。在这里,我对名为 'foo';
的 'global' build.xml 感兴趣
2) 从每行中删除所有前导空格;
3) 删除换行符 within 每个开始标签;
4) 过滤以“
5) 将 name-属性 上的单引号改为双引号;
6, 7,8) 删除前导“
9) 在每行上移动 'description' after 'name';
10) 删除 'name=' 及其引号;
11) 用方括号替换 'description=' 及其引号;和
12, 13) 排序并删除重复项(如果有)
示例输出:
example1
example2
example3 [Ipsum lorem]
我的build.xml有134个目标,其中大部分是隐藏的(hidden="true")。有没有办法从命令行列出所有目标?目标定义有时会分成多行,我通常对属性使用双引号字符。我在 Debian 上 运行 这个,排序目标的荣誉 and/or 也显示描述。 :-)
示例:
<target name="example1" hidden="false" />
<target name="example3" hidden="true" />
<target
description="Ipsum lorem"
hidden="true"
name='example3'
>
<phingcall target="example1" />
</target>
你不能用 phing 本身。如果目标设置为 "hidden".
,代码将跳过显示我们无法使用 Phing 执行此操作,但我们可以 在 Phing 中执行此操作。可能有比这更干净、更好的方法,但这可行——假设所有其他属性都用双引号引起来(即 just 通过上面的示例#3)
<target name="list_all" hidden="false">
<property name="command" value="
cat ${phing.file.foo}
| perl -pe 's|^\s*||g'
| perl -0pe 's|\n([^<])| |gs'
| grep '<target'
| perl -pe "s|name='([^']*)'|name=\"\"|g"
| perl -pe 's|^<target(\s?)||'
| perl -pe 's|(.*)([ ]?)depends="([^"]*)"([ ]?)(.*)| |g'
| perl -pe 's|(.*)([ ]?)hidden="([^"]*)"([ ]?)(.*)| |g'
| perl -pe 's|.*description="([^"]*).*name="([^"]*).*|name="" description=""|g'
| perl -pe 's|name="([^"]*)"||g'
| perl -pe 's|description="([^"]*)"|[]|g'
| sort
| uniq
" override="true" />
<exec command="${command}" passthru="true" />
</target>
这些线是做什么的?
1)输出build.xml的内容。在这里,我对名为 'foo';
的 'global' build.xml 感兴趣2) 从每行中删除所有前导空格;
3) 删除换行符 within 每个开始标签;
4) 过滤以“ 5) 将 name-属性 上的单引号改为双引号; 6, 7,8) 删除前导“ 9) 在每行上移动 'description' after 'name'; 10) 删除 'name=' 及其引号; 11) 用方括号替换 'description=' 及其引号;和 12, 13) 排序并删除重复项(如果有) 示例输出: example1
example2
example3 [Ipsum lorem]