cvs: phpdoc /scripts make-partial.php

From: Date: Tue, 13 Sep 2005 23:41:21 +0000
Subject: cvs: phpdoc /scripts make-partial.php
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969370118@lists.php.net to get a copy of this message
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 <mj@php.net> * @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"; +} + // }}}

« previous php.doc (#969370118) next »