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 $m4 = $doc->createElement("dir");
33 $m4->setAttribute("name", "m4");
34 $m4->appendChild($doc->createTextNode("\n"));
35 add(__DIR__
."/../m4", "*.*", "src", $m4);
36 $m4->appendChild($doc->createTextNode(" "));
38 $src = $doc->createElement("dir");
39 $src->setAttribute("name", "src");
40 $src->appendChild($doc->createTextNode("\n"));
41 add(__DIR__
."/../src", "*.{c,h,y,re,inc}", "src", $src);
42 $src->appendChild($doc->createTextNode(" "));
44 $scripts = $doc->createElement("dir");
45 $scripts->setAttribute("name", "scripts");
46 $scripts->appendChild($doc->createTextNode("\n"));
47 add(__DIR__
."/../scripts", "*.*", "src", $scripts);
48 $scripts->appendChild($doc->createTextNode(" "));
50 $psid = $doc->createElement("dir");
51 $psid->setAttribute("name", "psi.d");
52 $psid->appendChild($doc->createTextNode("\n"));
53 add(__DIR__
."/../psi.d", "*", "src", $psid);
54 $psid->appendChild($doc->createTextNode(" "));
56 $tests = $doc->createElement("dir");
57 $tests->setAttribute("name", "tests");
58 $tests->appendChild($doc->createTextNode("\n"));
59 add(__DIR__
."/../tests", "*.{phpt,inc,psi}", "test", $tests);
60 $tests->appendChild($doc->createTextNode(" "));
63 $xpath = new DOMXpath($doc);
64 $xpath->registerNamespace("p", "http://pear.php.net/dtd/package-2.0");
65 $root = $xpath->query("/p:package/p:contents/p:dir[@name='/']")->item(0);
67 $root->replaceChild($m4,
68 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='m4']")->item(0));
69 $root->replaceChild($psid,
70 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='psi.d']")->item(0));
71 $root->replaceChild($src,
72 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='src']")->item(0));
73 $root->replaceChild($scripts,
74 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='scripts']")->item(0));
75 $root->replaceChild($tests,
76 $xpath->query("/p:package/p:contents/p:dir[@name='/']/p:dir[@name='tests']")->item(0));
78 $doc->save(__DIR__
."/../package.xml");