techtonik Tue Sep 13 19:41:21 2005 EDT
Modified files:
/phpdoc/scripts make-partial.php
Log:
* sync with peardoc
http://cvs.php.net/diff.php/phpdoc/scripts/make-partial.php?r1=1.1&r2=1.2&ty=u
Index: phpdoc/scripts/make-partial.php
diff -u phpdoc/scripts/make-partial.php:1.1 phpdoc/scripts/make-partial.php:1.2
--- phpdoc/scripts/make-partial.php:1.1 Fri Jan 28 10:17:01 2005
+++ phpdoc/scripts/make-partial.php Tue Sep 13 19:41:19 2005
@@ -1,6 +1,7 @@
#!/usr/bin/env php
<?php
/** vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
+ *
* Script to trigger partial builds of the PEAR manual
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
@@ -11,30 +12,21 @@
*
* @author Martin Jansen <[EMAIL PROTECTED]>
* @copyright 2005 The PEAR Group
- * @version CVS: $Id: make-partial.php,v 1.1 2005/01/28 15:17:01 sean Exp $
+ * @version CVS: $Id: make-partial.php,v 1.2 2005/09/13 23:41:19 techtonik
Exp $
*/
// NOTE: originally from peardoc:/make-partial.php ;
// these files should be kept in sync
+if (substr(PHP_VERSION, 0, 1) == "4") {
+ require_once "PHP/Compat.php";
+ $components = PHP_Compat::loadVersion('5.0.0');
+}
+
require_once "Console/Getopt.php";
$console = new Console_Getopt;
$args = $console->getopt($console->readPHPArgv(), array(),
- array("format=", "include="));
-
-if (!function_exists("readline")) {
- echo "Error: The readline extension could not be found!";
- exit(1);
-}
-
-$file = file("manual.xml.in");
-if (!$file) {
- echo "Error: Unable to read manual.xml.in!";
- exit(1);
-}
-
-copy("manual.xml.in", "manual.xml.in.partial-backup");
-register_shutdown_function("restoreFile");
+ array("format=", "include=", "help"));
// {{{ gather arguments
@@ -42,7 +34,10 @@
$sections = array();
foreach ($args[0] as $arg) {
- if ($arg[0] == "--format") {
+ if ($arg[0] == "--help") {
+ showHelp();
+ exit(0);
+ } elseif ($arg[0] == "--format") {
$format = $arg[1];
} elseif ($arg[0] == '--include') {
$sections[] = $arg[1];
@@ -51,6 +46,25 @@
// }}}
+$hasReadline = true;
+if (!function_exists("readline")) {
+ $hasReadline = false;
+ echo "Warning: The readline extension could not be found!\n";
+ if (count($sections) == 0) {
+ showHelp();
+ echo "Exiting because no --include parameters were specified.\n";
+ exit(1);
+ }
+}
+
+$file = file("manual.xml.in");
+if (!$file) {
+ echo "Error: Unable to read manual.xml.in!";
+ exit(1);
+}
+
+copy("manual.xml.in", "manual.xml.in.partial-backup");
+register_shutdown_function("restoreFile", filemtime("manual.xml.in"));
$newFile = "";
$partStack = array();
@@ -68,12 +82,12 @@
if ($sections) {
echo "Including ". $matches[1] ."? ";
- if ($includePart = in_string($sections, $matches[1])) {
+ if ($includePart = inString($sections, $matches[1])) {
echo "YES\n";
} else {
echo "NO\n";
}
- } else {
+ } else if ($hasReadline) {
$include = readline("Include " . $matches[1] . "? [NO] ");
$includePart = evaluate($include);
}
@@ -117,12 +131,12 @@
if ($sections) {
echo "Including ". $matches[2] ."? ";
- if ($include = in_string($sections, $matches[2])) {
+ if ($include = inString($sections, $matches[2])) {
echo "YES\n";
} else {
echo "NO\n";
}
- } else {
+ } else if ($hasReadline) {
$include = evaluate(readline("Include " . $matches[2] . "?
[NO] "));
}
@@ -148,12 +162,14 @@
/**
* Restores the original manual.xml.in file
*/
-function restoreFile() {
+function restoreFile($savedmtime) {
if (!is_file("manual.xml.in.partial-backup")) {
return;
}
+ unlink("manual.xml.in");
rename("manual.xml.in.partial-backup", "manual.xml.in");
+ touch("manual.xml.in", $savedmtime);
}
/**
@@ -170,12 +186,16 @@
}
/**
- * $needle (array) is in $haystack?
+ * Checks if one element of the first parameter is part of the second parameter
*
+ * @param array List of needles
+ * @param string Haystack
+ * @return boolean True if one of the needles is in the haystack,
+ * false otherwise.
*/
-function in_string($needle, $haystack)
+function inString($needle, $haystack)
{
- foreach ((array) $needle AS $n) {
+ foreach ((array) $needle as $n) {
if (stripos($haystack, $n) !== false) {
return true;
}
@@ -183,4 +203,22 @@
return false;
}
+/**
+ * Prints a usage notice for the script
+ *
+ * @return void
+ */
+function showHelp()
+{
+ echo "Usage: make-partial.php [--format <format>] [--include <section1>]
[--include <section2>] ...\n";
+ echo " make-partial.php --help\n";
+ echo "\n";
+ echo " --format <format> Which format to build. Can be one of 'html',
'pearweb'.\n";
+ echo " Default is 'html'.\n";
+ echo " --include <section> Automatically include certain sections of the
manual\n";
+ echo " without asking for them explicitely. This
also works\n";
+ echo " on setups where the readline extension is not
available.\n";
+ echo " --help Prints this help text.\n\n";
+}
+
// }}}