3 function add($dir, $mask, $role, $node, $indent = " ") {
4 $doc = $node->ownerDocument
;
5 foreach (glob("$dir/$mask", GLOB_BRACE
) as $file) {
6 $fileNode = $doc->createElement("file");
7 $fileNode->setAttribute("role", $role);
8 $fileNode->setAttribute("name", basename($file));
10 $node->appendChild($doc->createTextNode($indent));
11 $node->appendChild($fileNode);
12 $node->appendChild($doc->createTextNode("\n"));
14 foreach (glob("$dir/*", GLOB_ONLYDIR
) as $dir) {
15 $dirNode = $doc->createElement("dir");
16 $dirNode->setAttribute("name", basename($dir));
17 $dirNode->appendChild($doc->createTextNode("\n"));
19 add($dir, $mask, $role, $dirNode, "$indent ");
21 $dirNode->appendChild($doc->createTextNode($indent));
23 $node->appendChild($doc->createTextNode($indent));
24 $node->appendChild($dirNode);
25 $node->appendChild($doc->createTextNode("\n"));
29 $doc = new DOMDocument
;
30 $doc->load(__DIR__
."/../package.xml");
32 $src = $doc->createElement("dir");
33 $src->setAttribute("name", "src");
34 $src->appendChild($doc->createTextNode("\n"));
35 add(__DIR__
."/../src", "*.{c,h,y,re,inc}", "src", $src);
36 $src->appendChild($doc->createTextNode(" "));
38 $tests = $doc->createElement("dir");
39 $tests->setAttribute("name", "tests");
40 $tests->appendChild($doc->createTextNode("\n"));
41 add(__DIR__
."/../tests", "*.{phpt,inc,psi}", "test", $tests);
42 $tests->appendChild($doc->createTextNode(" "));
44 $xpath = new DOMXpath($doc);
45 $xpath->registerNamespace("p", "http://pear.php.net/dtd/package-2.0");
46 $root = $xpath->query("/p:package/p:contents/p:dir[@name='/']")->item(0);
47 $root->replaceChild($src,
48 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='src']")->item(0));
49 $root->replaceChild($tests,
50 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='tests']")->item(0));
52 $doc->save(__DIR__
."/../package.xml");