]> granicus.if.org Git - python/commitdiff
Issue #17386: Expand Doc/make.bat to be much more similar to Doc/Makefile
authorZachary Ware <zachary.ware@gmail.com>
Tue, 29 Apr 2014 14:45:33 +0000 (09:45 -0500)
committerZachary Ware <zachary.ware@gmail.com>
Tue, 29 Apr 2014 14:45:33 +0000 (09:45 -0500)
Doc/make.bat
Misc/NEWS

index 838820fc9c7f36d3b4d686eefa2a784d4a93ef8a..6f74cb04af7ff59485f7afac5da2a3f36aadb10d 100644 (file)
-@@echo off
+@echo off
 setlocal
 
+pushd %~dp0
+
+set this=%~n0
+
 if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build
 if "%PYTHON%" EQU "" set PYTHON=py
-if "%HTMLHELP%" EQU "" set HTMLHELP=%ProgramFiles%\HTML Help Workshop\hhc.exe
+
+if DEFINED ProgramFiles(x86) set _PRGMFLS=%ProgramFiles(x86)%
+if NOT DEFINED ProgramFiles(x86) set _PRGMFLS=%ProgramFiles%
+if "%HTMLHELP%" EQU "" set HTMLHELP=%_PRGMFLS%\HTML Help Workshop\hhc.exe
+
 if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/sphinxext/patchlevel.py`) do set DISTVERSION=%%v
 
+if "%BUILDDIR%" EQU "" set BUILDDIR=build
+
+rem Targets that don't require sphinx-build
 if "%1" EQU "" goto help
-if "%1" EQU "html" goto build
-if "%1" EQU "htmlhelp" goto build
-if "%1" EQU "latex" goto build
-if "%1" EQU "text" goto build
-if "%1" EQU "suspicious" goto build
-if "%1" EQU "linkcheck" goto build
-if "%1" EQU "changes" goto build
+if "%1" EQU "help" goto help
+if "%1" EQU "check" goto check
+if "%1" EQU "serve" goto serve
+if "%1" == "clean" (
+    rmdir /q /s %BUILDDIR%
+    goto end
+)
+
+%SPHINXBUILD% 2> nul
+if errorlevel 9009 (
+    echo.
+    echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+    echo.installed, then set the SPHINXBUILD environment variable to point
+    echo.to the full path of the 'sphinx-build' executable. Alternatively you
+    echo.may add the Sphinx directory to PATH.
+    echo.
+    echo.If you don't have Sphinx installed, grab it from
+    echo.http://sphinx-doc.org/
+    goto end
+)
+
+rem Targets that do require sphinx-build and have their own label
+if "%1" EQU "htmlview" goto htmlview
+
+rem Everything else
+goto build
 
 :help
-set this=%~n0
-echo HELP
+echo.usage: %this% BUILDER [filename ...]
+echo.
+echo.Call %this% with the desired Sphinx builder as the first argument, e.g.
+echo.``%this% html`` or ``%this% doctest``.  Interesting targets that are
+echo.always available include:
+echo.
+echo.   Provided by Sphinx:
+echo.      html, htmlhelp, latex, text
+echo.      suspicious, linkcheck, changes, doctest
+echo.   Provided by this script:
+echo.      clean, check, serve, htmlview
 echo.
-echo %this% html
-echo %this% htmlhelp
-echo %this% latex
-echo %this% text
-echo %this% suspicious
-echo %this% linkcheck
-echo %this% changes
+echo.All arguments past the first one are passed through to sphinx-build as
+echo.filenames to build or are ignored.  See README.txt in this directory or
+echo.the documentation for your version of Sphinx for more exhaustive lists
+echo.of available targets and descriptions of each.
 echo.
+echo.This script assumes that the SPHINXBUILD environment variable contains
+echo.a legitimate command for calling sphinx-build, or that sphinx-build is
+echo.on your PATH if SPHINXBUILD is not set.  Options for sphinx-build can
+echo.be passed by setting the SPHINXOPTS environment variable.
 goto end
 
 :build
-if not exist build mkdir build
-if not exist build\%1 mkdir build\%1
-if not exist build\doctrees mkdir build\doctrees
-cmd /C %SPHINXBUILD% -b%1 -dbuild\doctrees . build\%*
-if "%1" EQU "htmlhelp" "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp
+if NOT "%PAPER%" == "" (
+    set SPHINXOPTS=-D latex_paper_size=%PAPER% %SPHINXOPTS%
+)
+cmd /C %SPHINXBUILD% %SPHINXOPTS% -b%1 -dbuild\doctrees . %BUILDDIR%\%*
+
+if "%1" EQU "htmlhelp" (
+    cmd /C "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp
+    rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2
+    if not errorlevel 2 cmd /C exit /b 0
+)
+
+echo.
+if errorlevel 1 (
+    echo.Build failed (exit code %ERRORLEVEL%^), check for error messages
+    echo.above.  Any output will be found in %BUILDDIR%\%1
+) else (
+    echo.Build succeeded. All output should be in %BUILDDIR%\%1
+)
+goto end
+
+:htmlview
+if NOT "%2" EQU "" (
+    echo.Can't specify filenames to build with htmlview target, ignoring.
+)
+cmd /C %this% html
+
+if EXIST %BUILDDIR%\html\index.html (
+    echo.Opening %BUILDDIR%\html\index.html in the default web browser...
+    start %BUILDDIR%\html\index.html
+)
+
+goto end
+
+:check
+cmd /C %PYTHON% tools\rstlint.py -i tools
+goto end
+
+:serve
+cmd /C %PYTHON% ..\Tools\scripts\serve.py %BUILDDIR%\html
 goto end
 
 :end
+popd
index 7739bcbe0df16b41f69efc7f48153784142a59e7..93d3631bc664408461c2c44773c05cc29a1ab9a4 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -237,6 +237,9 @@ C API
 Documentation
 -------------
 
+- Issue #17386: Expanded functionality of the ``Doc/make.bat`` script to make
+  it much more comparable to ``Doc/Makefile``.
+
 - Issue #21043: Remove the recommendation for specific CA organizations and to
   mention the ability to load the OS certificates.