17db96d56Sopenharmony_ci@echo off
27db96d56Sopenharmony_cisetlocal
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_cipushd %~dp0
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ciset this=%~n0
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_cicall ..\PCbuild\find_python.bat %PYTHON%
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ciif not defined PYTHON set PYTHON=py
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ciif not defined SPHINXBUILD (
137db96d56Sopenharmony_ci    %PYTHON% -c "import sphinx" > nul 2> nul
147db96d56Sopenharmony_ci    if errorlevel 1 (
157db96d56Sopenharmony_ci        echo Installing sphinx with %PYTHON%
167db96d56Sopenharmony_ci        %PYTHON% -m pip install -r requirements.txt
177db96d56Sopenharmony_ci        if errorlevel 1 exit /B
187db96d56Sopenharmony_ci    )
197db96d56Sopenharmony_ci    set SPHINXBUILD=%PYTHON% -c "import sphinx.cmd.build, sys; sys.exit(sphinx.cmd.build.main())"
207db96d56Sopenharmony_ci)
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci%PYTHON% -c "import python_docs_theme" > nul 2> nul
237db96d56Sopenharmony_ciif errorlevel 1 (
247db96d56Sopenharmony_ci    echo Installing python-docs-theme with %PYTHON%
257db96d56Sopenharmony_ci    %PYTHON% -m pip install python-docs-theme
267db96d56Sopenharmony_ci    if errorlevel 1 exit /B
277db96d56Sopenharmony_ci)
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ciif not defined BLURB (
307db96d56Sopenharmony_ci    %PYTHON% -c "import blurb" > nul 2> nul
317db96d56Sopenharmony_ci    if errorlevel 1 (
327db96d56Sopenharmony_ci        echo Installing blurb with %PYTHON%
337db96d56Sopenharmony_ci        rem Should have been installed with Sphinx earlier
347db96d56Sopenharmony_ci        %PYTHON% -m pip install blurb
357db96d56Sopenharmony_ci        if errorlevel 1 exit /B
367db96d56Sopenharmony_ci    )
377db96d56Sopenharmony_ci    set BLURB=%PYTHON% -m blurb
387db96d56Sopenharmony_ci)
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ciif not defined SPHINXLINT (
417db96d56Sopenharmony_ci    %PYTHON% -c "import sphinxlint" > nul 2> nul
427db96d56Sopenharmony_ci    if errorlevel 1 (
437db96d56Sopenharmony_ci        echo Installing sphinx-lint with %PYTHON%
447db96d56Sopenharmony_ci        rem Should have been installed with Sphinx earlier
457db96d56Sopenharmony_ci        %PYTHON% -m pip install sphinx-lint
467db96d56Sopenharmony_ci        if errorlevel 1 exit /B
477db96d56Sopenharmony_ci    )
487db96d56Sopenharmony_ci    set SPHINXLINT=%PYTHON% -m sphinxlint
497db96d56Sopenharmony_ci)
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ciif "%1" NEQ "htmlhelp" goto :skiphhcsearch
527db96d56Sopenharmony_ciif exist "%HTMLHELP%" goto :skiphhcsearch
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_cirem Search for HHC in likely places
557db96d56Sopenharmony_ciset HTMLHELP=
567db96d56Sopenharmony_ciwhere hhc /q && set "HTMLHELP=hhc" && goto :skiphhcsearch
577db96d56Sopenharmony_ciwhere /R ..\externals hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc"
587db96d56Sopenharmony_ciif not exist "%HTMLHELP%" where /R "%ProgramFiles(x86)%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc"
597db96d56Sopenharmony_ciif not exist "%HTMLHELP%" where /R "%ProgramFiles%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc"
607db96d56Sopenharmony_ciif not exist "%HTMLHELP%" (
617db96d56Sopenharmony_ci    echo.
627db96d56Sopenharmony_ci    echo.The HTML Help Workshop was not found.  Set the HTMLHELP variable
637db96d56Sopenharmony_ci    echo.to the path to hhc.exe or download and install it from
647db96d56Sopenharmony_ci    echo.http://msdn.microsoft.com/en-us/library/ms669985
657db96d56Sopenharmony_ci    exit /B 1
667db96d56Sopenharmony_ci)
677db96d56Sopenharmony_ci:skiphhcsearch
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ciif not defined DISTVERSION for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_ciif not defined BUILDDIR set BUILDDIR=build
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_cirem Targets that don't require sphinx-build
747db96d56Sopenharmony_ciif "%1" EQU "" goto help
757db96d56Sopenharmony_ciif "%1" EQU "help" goto help
767db96d56Sopenharmony_ciif "%1" EQU "check" goto check
777db96d56Sopenharmony_ciif "%1" EQU "serve" goto serve
787db96d56Sopenharmony_ciif "%1" == "clean" (
797db96d56Sopenharmony_ci    rmdir /q /s "%BUILDDIR%"
807db96d56Sopenharmony_ci    goto end
817db96d56Sopenharmony_ci)
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci%SPHINXBUILD% >nul 2> nul
847db96d56Sopenharmony_ciif errorlevel 9009 (
857db96d56Sopenharmony_ci    echo.
867db96d56Sopenharmony_ci    echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
877db96d56Sopenharmony_ci    echo.installed, then set the SPHINXBUILD environment variable to point
887db96d56Sopenharmony_ci    echo.to the full path of the 'sphinx-build' executable. Alternatively you
897db96d56Sopenharmony_ci    echo.may add the Sphinx directory to PATH.
907db96d56Sopenharmony_ci    echo.
917db96d56Sopenharmony_ci    echo.If you don't have Sphinx installed, grab it from
927db96d56Sopenharmony_ci    echo.http://sphinx-doc.org/
937db96d56Sopenharmony_ci    popd
947db96d56Sopenharmony_ci    exit /B 1
957db96d56Sopenharmony_ci)
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_cirem Targets that do require sphinx-build and have their own label
987db96d56Sopenharmony_ciif "%1" EQU "htmlview" goto htmlview
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_cirem Everything else
1017db96d56Sopenharmony_cigoto build
1027db96d56Sopenharmony_ci
1037db96d56Sopenharmony_ci:help
1047db96d56Sopenharmony_ciecho.usage: %this% BUILDER [filename ...]
1057db96d56Sopenharmony_ciecho.
1067db96d56Sopenharmony_ciecho.Call %this% with the desired Sphinx builder as the first argument, e.g.
1077db96d56Sopenharmony_ciecho.``%this% html`` or ``%this% doctest``.  Interesting targets that are
1087db96d56Sopenharmony_ciecho.always available include:
1097db96d56Sopenharmony_ciecho.
1107db96d56Sopenharmony_ciecho.   Provided by Sphinx:
1117db96d56Sopenharmony_ciecho.      html, htmlhelp, latex, text
1127db96d56Sopenharmony_ciecho.      suspicious, linkcheck, changes, doctest
1137db96d56Sopenharmony_ciecho.   Provided by this script:
1147db96d56Sopenharmony_ciecho.      clean, check, htmlview
1157db96d56Sopenharmony_ciecho.
1167db96d56Sopenharmony_ciecho.All arguments past the first one are passed through to sphinx-build as
1177db96d56Sopenharmony_ciecho.filenames to build or are ignored.  See README.rst in this directory or
1187db96d56Sopenharmony_ciecho.the documentation for your version of Sphinx for more exhaustive lists
1197db96d56Sopenharmony_ciecho.of available targets and descriptions of each.
1207db96d56Sopenharmony_ciecho.
1217db96d56Sopenharmony_ciecho.This script assumes that the SPHINXBUILD environment variable contains
1227db96d56Sopenharmony_ciecho.a legitimate command for calling sphinx-build, or that sphinx-build is
1237db96d56Sopenharmony_ciecho.on your PATH if SPHINXBUILD is not set.  Options for sphinx-build can
1247db96d56Sopenharmony_ciecho.be passed by setting the SPHINXOPTS environment variable.
1257db96d56Sopenharmony_cigoto end
1267db96d56Sopenharmony_ci
1277db96d56Sopenharmony_ci:build
1287db96d56Sopenharmony_ciif not exist "%BUILDDIR%" mkdir "%BUILDDIR%"
1297db96d56Sopenharmony_ci
1307db96d56Sopenharmony_cirem PY_MISC_NEWS_DIR is also used by our Sphinx extension in tools/extensions/pyspecific.py
1317db96d56Sopenharmony_ciif not defined PY_MISC_NEWS_DIR set PY_MISC_NEWS_DIR=%BUILDDIR%\%1
1327db96d56Sopenharmony_ciif not exist "%PY_MISC_NEWS_DIR%" mkdir "%PY_MISC_NEWS_DIR%"
1337db96d56Sopenharmony_ciif exist ..\Misc\NEWS (
1347db96d56Sopenharmony_ci    echo.Copying Misc\NEWS to %PY_MISC_NEWS_DIR%\NEWS
1357db96d56Sopenharmony_ci    copy ..\Misc\NEWS "%PY_MISC_NEWS_DIR%\NEWS" > nul
1367db96d56Sopenharmony_ci) else if exist ..\Misc\NEWS.D (
1377db96d56Sopenharmony_ci    if defined BLURB (
1387db96d56Sopenharmony_ci        echo.Merging Misc/NEWS with %BLURB%
1397db96d56Sopenharmony_ci        %BLURB% merge -f "%PY_MISC_NEWS_DIR%\NEWS"
1407db96d56Sopenharmony_ci    ) else (
1417db96d56Sopenharmony_ci        echo.No Misc/NEWS file and Blurb is not available.
1427db96d56Sopenharmony_ci        exit /B 1
1437db96d56Sopenharmony_ci    )
1447db96d56Sopenharmony_ci)
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ciif defined PAPER (
1477db96d56Sopenharmony_ci    set SPHINXOPTS=-D latex_elements.papersize=%PAPER% %SPHINXOPTS%
1487db96d56Sopenharmony_ci)
1497db96d56Sopenharmony_ciif "%1" EQU "htmlhelp" (
1507db96d56Sopenharmony_ci    set SPHINXOPTS=-D html_theme_options.body_max_width=none %SPHINXOPTS%
1517db96d56Sopenharmony_ci)
1527db96d56Sopenharmony_cicmd /S /C "%SPHINXBUILD% %SPHINXOPTS% -b%1 -dbuild\doctrees . "%BUILDDIR%\%1" %2 %3 %4 %5 %6 %7 %8 %9"
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ciif "%1" EQU "htmlhelp" (
1557db96d56Sopenharmony_ci    "%HTMLHELP%" "%BUILDDIR%\htmlhelp\python%DISTVERSION:.=%.hhp"
1567db96d56Sopenharmony_ci    rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2
1577db96d56Sopenharmony_ci    if not errorlevel 2 cmd /C exit /b 0
1587db96d56Sopenharmony_ci)
1597db96d56Sopenharmony_ci
1607db96d56Sopenharmony_ciecho.
1617db96d56Sopenharmony_ciif errorlevel 1 (
1627db96d56Sopenharmony_ci    echo.Build failed (exit code %ERRORLEVEL%^), check for error messages
1637db96d56Sopenharmony_ci    echo.above.  Any output will be found in %BUILDDIR%\%1
1647db96d56Sopenharmony_ci) else (
1657db96d56Sopenharmony_ci    echo.Build succeeded. All output should be in %BUILDDIR%\%1
1667db96d56Sopenharmony_ci)
1677db96d56Sopenharmony_cigoto end
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci:htmlview
1707db96d56Sopenharmony_ciif NOT "%2" EQU "" (
1717db96d56Sopenharmony_ci    echo.Can't specify filenames to build with htmlview target, ignoring.
1727db96d56Sopenharmony_ci)
1737db96d56Sopenharmony_cicmd /C %this% html
1747db96d56Sopenharmony_ci
1757db96d56Sopenharmony_ciif EXIST "%BUILDDIR%\html\index.html" (
1767db96d56Sopenharmony_ci    echo.Opening "%BUILDDIR%\html\index.html" in the default web browser...
1777db96d56Sopenharmony_ci    start "" "%BUILDDIR%\html\index.html"
1787db96d56Sopenharmony_ci)
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_cigoto end
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ci:check
1837db96d56Sopenharmony_cirem Check the docs and NEWS files with sphinx-lint.
1847db96d56Sopenharmony_cirem Ignore the tools dir and check that the default role is not used.
1857db96d56Sopenharmony_cicmd /S /C "%SPHINXLINT% -i tools --enable default-role"
1867db96d56Sopenharmony_cicmd /S /C "%SPHINXLINT% --enable default-role ..\Misc\NEWS.d\next\ "
1877db96d56Sopenharmony_cigoto end
1887db96d56Sopenharmony_ci
1897db96d56Sopenharmony_ci:serve
1907db96d56Sopenharmony_ciecho.The serve target was removed, use htmlview instead (see bpo-36329)
1917db96d56Sopenharmony_cigoto end
1927db96d56Sopenharmony_ci
1937db96d56Sopenharmony_ci:end
1947db96d56Sopenharmony_cipopd
195