administrativa
[m6w6/ext-psi] / scripts / gen_package_xml.php
1 <?php
2
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));
9
10 $node->appendChild($doc->createTextNode($indent));
11 $node->appendChild($fileNode);
12 $node->appendChild($doc->createTextNode("\n"));
13 }
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"));
18
19 add($dir, $mask, $role, $dirNode, "$indent ");
20
21 $dirNode->appendChild($doc->createTextNode($indent));
22
23 $node->appendChild($doc->createTextNode($indent));
24 $node->appendChild($dirNode);
25 $node->appendChild($doc->createTextNode("\n"));
26 }
27 }
28
29 $doc = new DOMDocument;
30 $doc->load(__DIR__."/../package.xml");
31
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(" "));
37
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(" "));
43
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(" "));
49
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(" "));
55
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(" "));
61
62
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);
66
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));
77
78 $doc->save(__DIR__."/../package.xml");