travis: gitter
[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 $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(" "));
37
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(" "));
43
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));
51
52 $doc->save(__DIR__."/../package.xml");