├── .dockerignore ├── .editorconfig ├── .github └── workflows │ └── CI.yml ├── .gitignore ├── ALL-for-build ├── Downloads │ ├── dockrun_t3rd.bat │ └── texmf_typo3 │ │ ├── README.rst │ │ ├── fonts │ │ ├── map │ │ │ └── dvips │ │ │ │ └── share │ │ │ │ └── share.map │ │ ├── tfm │ │ │ └── typo3 │ │ │ │ └── share │ │ │ │ ├── typo3shareb8t.tfm │ │ │ │ ├── typo3sharebi8t.tfm │ │ │ │ ├── typo3sharebo8t.tfm │ │ │ │ ├── typo3sharer8t.tfm │ │ │ │ ├── typo3shareri8t.tfm │ │ │ │ └── typo3sharero8t.tfm │ │ └── truetype │ │ │ └── typo3 │ │ │ └── share │ │ │ ├── typo3shareb.ttf │ │ │ ├── typo3sharebi.ttf │ │ │ ├── typo3sharebo.ttf │ │ │ ├── typo3sharer.ttf │ │ │ ├── typo3shareri.ttf │ │ │ └── typo3sharero.ttf │ │ ├── tex │ │ └── latex │ │ │ └── typo3 │ │ │ └── share │ │ │ └── t1typo3share.fd │ │ ├── typo3.sty │ │ └── typo3_logo_color.png ├── Examples │ ├── Settings.cfg.001.minimal.cfg │ ├── Settings.cfg.002.cfg │ └── explore-docutils-conf-general.json ├── Makedir │ ├── .gitignore │ ├── Defaults.cfg │ ├── Overrides.cfg │ ├── _htaccess │ ├── _info.txt │ ├── buildsettings.sh │ ├── conf.py │ ├── docutils.conf │ ├── docutils_unsafe.conf │ └── sphinxcontrib-plantuml │ │ └── typo3_styles.iuml ├── Menu │ ├── mainmenu.sh │ ├── show-faq.sh │ ├── show-howto.sh │ ├── show-shell-commands.sh │ └── show-windows-bat.sh ├── Scripts │ ├── just1sphinxbuild.py │ └── serve4build.py ├── Toolchains │ └── .gitignore ├── global-gitconfig.cfg ├── userhome │ ├── .bashrc │ └── .gitkeep └── venv │ ├── .gitkeep │ ├── info.txt │ ├── requirements-dev.txt │ ├── requirements.txt │ └── tctconfig.cfg ├── CHANGES.rst ├── CONTRIBUTING.rst ├── Dockerfile ├── Dockerfile.build.sh ├── Documentation └── dummy.rst ├── Makefile ├── README.rst ├── VERSION.txt └── composer.json /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.dockerignore 2 | **/.git/ 3 | **/.gitkeep 4 | **/.idea/ 5 | *GENERATED* 6 | *NOT_VERSIONED* 7 | ALL-for-RW-mount/ 8 | Documentation/ 9 | PROJECT/ 10 | README.rst 11 | RepoHelpers/ 12 | RESULT/ 13 | tmp/ 14 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file? false = no! 4 | root = false 5 | 6 | [{*.rst,*.rst.txt}] 7 | charset = utf-8 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | indent_style = space 12 | indent_size = 3 13 | 14 | # MD-Files 15 | [*.md] 16 | charset = utf-8 17 | end_of_line = lf 18 | insert_final_newline = true 19 | trim_trailing_whitespace = true 20 | indent_style = space 21 | indent_size = 4 22 | -------------------------------------------------------------------------------- /.github/workflows/CI.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | on: 6 | push: 7 | branches: [ debug, develop, master ] 8 | 9 | jobs: 10 | 11 | build-images: 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | 17 | - name: Login to GitHub Container Registry 18 | uses: docker/login-action@v2 19 | with: 20 | registry: ghcr.io 21 | username: marble 22 | password: ${{ secrets.DRC_GITHUB_REGISTRY }} 23 | 24 | - name: Build 25 | run: OUR_IMAGE_TAG=latest OUR_IMAGE_SHORT=t3rd make build 26 | 27 | - name: Push to ghcr.io 28 | run: OUR_IMAGE_TAG=latest make push_to_ghcr 29 | 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *GENERATED* 3 | *NOT_VERSIONED* 4 | .idea 5 | /**/node_modules 6 | /ALL-for-build/venv/Pipfile.lock 7 | -------------------------------------------------------------------------------- /ALL-for-build/Downloads/dockrun_t3rd.bat: -------------------------------------------------------------------------------- 1 | @echo OFF 2 | 3 | rem dockrun_t3rd.bat, mb, 2019-09-27, 2020-04-03, 2020-12-01 4 | rem Author: Martin.Bless@mbless.de 5 | rem License: MIT (feel free, use on your own risk, cite me) 6 | rem 7 | rem Save this script as: %USERPROFILE%\dockrun_t3rd.bat 8 | rem 9 | rem To run this script: 10 | rem Open a "Command line" window ("Kommandozeile"). Not Powershell! 11 | rem Run the command: 12 | rem %USERPROFILE%\dockrun_t3rd.bat [ARGS] ' 13 | rem 14 | rem Learn from https://en.wikibooks.org/wiki/Windows_Batch_Scripting 15 | rem Type 'echo %USERPROFILE% ' to see what folder %USERPROFILE% is. 16 | rem 17 | rem Welcome to the power of Spaghetti code :-) 18 | rem Created and tested on Windows 10. 19 | rem 20 | 21 | set PROJECT=%cd% 22 | if not x%PROJECT:~-1%x == x\x ( 23 | set PROJECT=%PROJECT%\ 24 | ) 25 | set RESULT=%PROJECT%Documentation-GENERATED-temp 26 | set TMP=%PROJECT%tmp-GENERATED-temp 27 | if not exist %TMP% ( 28 | set TMP= 29 | ) 30 | 31 | if x%T3DOCS_OURIMAGE%x == xx ( 32 | set T3DOCS_OURIMAGE=t3docs/render-documentation:latest 33 | ) 34 | 35 | if not exist %RESULT% ( 36 | mkdir %RESULT% 37 | ) 38 | 39 | set argcount=0 40 | set arg1=%1 41 | set arg2ff= 42 | set allargs=%1 43 | shift 44 | if not x%arg1%x == xx set /a argcount+=1 45 | 46 | :collectargsstart 47 | if x%1x==xx goto collectargsend 48 | set allargs=%allargs% %1 49 | set arg2ff=%arg2ff% %1 50 | set /a argcount+=1 51 | shift 52 | goto collectargsstart 53 | :collectargsend 54 | 55 | if x%argcount%x==x0x ( 56 | set interactive=1 57 | ) else ( 58 | set interactive=0 59 | ) 60 | 61 | if x%interactive%x == x1x ( 62 | echo. 63 | echo. 64 | echo. 65 | echo. 66 | ) 67 | 68 | 69 | if x%interactive%x == x0x goto oneshot 70 | 71 | :menu 72 | echo. 73 | echo ========================================== 74 | echo Render TYPO3 documentation 75 | echo ------------------------------------------ 76 | echo Using : %T3DOCS_OURIMAGE% 77 | echo PROJECT: %PROJECT% 78 | echo RESULT : %RESULT% 79 | echo TMP : %TMP% 80 | echo. 81 | echo CHOICE ACTION 82 | echo ------ ----------------------------------- 83 | echo 1 dockrun_t3rd.bat makehtml 84 | echo 1nc dockrun_t3rd.bat makehtml-no-cache 85 | echo 2 dockrun_t3rd.bat makeall 86 | echo 2nc dockrun_t3rd.bat makeall-no-cache 87 | echo bb dockrun_t3rd.bat /bin/bash 88 | echo ea dockrun_t3rd.bat export-ALL 89 | echo v dockrun_t3rd.bat --version 90 | echo pull docker pull %T3DOCS_OURIMAGE% (fetch and update) 91 | echo ? show usage 92 | echo q quit - leave and do nothing 93 | echo ------ ----------------------------------- 94 | echo. 95 | set INP= 96 | set /P INP="Please enter your choice and press ENTER: " 97 | 98 | if "%INP%"=="1" goto makehtml 99 | if "%INP%"=="1nc" goto makehtml-no-cache 100 | if "%INP%"=="2" goto makeall 101 | if "%INP%"=="2nc" goto makeall-no-cache 102 | if "%INP%"=="bb" goto binbash 103 | if "%INP%"=="h" goto containerhelp 104 | if "%INP%"=="ea" goto exportall 105 | if "%INP%"=="v" goto containerversion 106 | if "%INP%"=="?" goto usage 107 | if "%INP%"=="q" goto quit 108 | if "%INP%"=="pull" goto pull 109 | echo -------------------------- 110 | echo unknown choice '%INP%' 111 | pause 112 | goto menu 113 | 114 | 115 | :usage 116 | echo. 117 | echo ========================================== 118 | echo Render TYPO3 documentation 119 | echo ------------------------------------------ 120 | echo. 121 | echo Run this script in a "Command line" window ("Kommandozeile"). 122 | echo Do not use Powershell. 123 | echo. 124 | echo Usage: 125 | echo dockrun_t3rd.bat [ARGS] 126 | echo. 127 | echo Advice: 128 | echo 1. Save the script to %%USERPROFILE%%\dockrun_t3rd.bat 129 | echo 2. Open a command line window and navigate to your project. 130 | echo 3. Run the script: 131 | echo %%USERPROFILE%%\dockrun_t3rd.bat 132 | echo. 133 | echo Example: 134 | echo %%USERPROFILE%%\dockrun_t3rd.bat makehtml -c make_singlehtml 1 135 | echo. 136 | echo Usage: 137 | echo dockrun_t3rd.bat [ARGS] 138 | echo. 139 | echo ARGUMENT DESCRIPTION 140 | echo ? Show this menu 141 | echo --version Show buildinfo.txt of this container 142 | echo makeall Create all output formats 143 | echo makeall-no-cache Remove cache first, then create all 144 | echo makehtml Create HTML output 145 | echo makehtml-no-cache Remove cache first, then build HTML 146 | echo show-shell-commands Show useful linux shell commands and functions 147 | echo show-bat-file Show source of dockrun_t3rd.bat 148 | echo show-howto Show howto (not totally up to date) 149 | echo show-faq Show questions and answers (not totally up to date) 150 | echo bashcmd Run a bash command in the container 151 | echo /bin/bash Enter the container's Bash shell as superuser 152 | echo /usr/bin/bash Enter the container's Bash shell as normal user 153 | echo export-ALL Copy /ALL to /RESULT/ALL-exported 154 | echo tct Run TCT, the toolchain runner 155 | echo. 156 | echo Examples: 157 | echo dockrun_t3rd.bat (enter interactive mode) 158 | echo dockrun_t3rd.bat --help 159 | echo dockrun_t3rd.bat export-ALL 160 | echo dockrun_t3rd.bat makeall-no-cache 161 | echo dockrun_t3rd.bat makehtml 162 | echo dockrun_t3rd.bat bashcmd ls -la /ALL 163 | echo dockrun_t3rd.bat /bin/bash 164 | echo dockrun_t3rd.bat /usr/bin/bash 165 | echo. 166 | echo Container selection: 167 | echo Set the environment variable T3DOCS_OURIMAGE to the container you want 168 | echo to use. Afterwards run 'dockrun_t3rd.bat'. 169 | echo. 170 | echo Example: 171 | echo set T3DOCS_OURIMAGE=t3docs/render-documentation:develop 172 | echo %%USERPROFILE%%\dockrun_t3rd.bat 173 | echo. 174 | if x%interactive%x == x1x pause & goto menu 175 | goto alldone 176 | 177 | 178 | :binbash 179 | set arg1=/bin/bash 180 | goto menuaction 181 | 182 | :containerversion 183 | set arg1=--version 184 | goto menuaction 185 | 186 | :exportall 187 | set arg1=export-ALL 188 | goto menuaction 189 | 190 | :makeall 191 | set arg1=makeall 192 | goto menuaction 193 | 194 | :makeall-no-cache 195 | set arg1=makeall-no-cache 196 | goto menuaction 197 | 198 | :makehtml 199 | set arg1=makehtml 200 | goto menuaction 201 | 202 | :makehtml-no-cache 203 | set arg1=makehtml-no-cache 204 | goto menuaction 205 | 206 | :pull 207 | @echo docker pull %T3DOCS_OURIMAGE% 208 | docker pull %T3DOCS_OURIMAGE% 209 | pause 210 | goto menu 211 | 212 | :menuaction 213 | set allargs=%arg1% 214 | echo %arg1% 215 | goto oneshot 216 | 217 | :oneshot 218 | if x%arg1%x == x?x goto usage 219 | if xx == xx ( 220 | set cmd=docker run --rm 221 | set trailingargs=%allargs% 222 | ) 223 | if x%arg1%x == x/bin/bashx ( 224 | set cmd=docker run --rm --entrypoint=/bin/bash -it 225 | set trailingargs= 226 | ) 227 | if x%arg1%x == x/usr/bin/bashx ( 228 | set cmd=docker run --rm --entrypoint=/bin/bash -it 229 | set trailingargs= 230 | ) 231 | if x%arg1%x == xexport-ALLx ( 232 | set cmd=docker run --rm --entrypoint=/bin/bash 233 | set trailingargs=-c "rsync -a --delete /ALL/ /RESULT/ALL-exported" 234 | echo The export will go to: 235 | echo %RESULT%/ALL-exported 236 | ) 237 | if x%arg1%x == xbashcmdx ( 238 | set cmd=docker run --rm --entrypoint=/bin/bash 239 | set trailingargs=-c %arg2ff% 240 | ) 241 | set cmd=%cmd% -v %PROJECT%:/PROJECT:ro 242 | set cmd=%cmd% -v %RESULT%:/RESULT 243 | if not x%TMP%x == xx ( 244 | set cmd=%cmd% -v %TMP%:/tmp 245 | ) 246 | set cmd=%cmd% %T3DOCS_OURIMAGE% %trailingargs% 247 | %cmd% 248 | 249 | if x%interactive%x == x1x pause 250 | echo ------------------------------------------ 251 | echo last call was: 252 | echo dockrun_t3rd.bat %allargs% 253 | echo. 254 | echo last command was: 255 | echo %cmd% 256 | echo. 257 | if x%interactive%x == x1x pause & goto menu 258 | goto alldone 259 | 260 | 261 | :quit 262 | echo quit 263 | goto alldone 264 | 265 | 266 | :alldone 267 | -------------------------------------------------------------------------------- /ALL-for-build/Downloads/texmf_typo3/README.rst: -------------------------------------------------------------------------------- 1 | 2 | ======================================= 3 | About folder ALL/Downloads/texmf\_typo3 4 | ======================================= 5 | 6 | This is a (hopefully) ready to run version of 7 | https://github.com/TYPO3-Documentation/latex.typo3. 8 | 9 | It was created on Ubuntu 18.04 with `texlive` installed:: 10 | 11 | # Linux, Ubuntu 18.04 12 | apt-get install \ 13 | latexmk \ 14 | texlive \ 15 | texlive-fonts-recommended \ 16 | texlive-latex-extra \ 17 | texlive-latex-recommended 18 | 19 | 20 | The build recipe of this folder `texmf_typo3` 21 | ============================================= 22 | 23 | 1. Download https://github.com/TYPO3-Documentation/latex.typo3/archive/v1.1.0.zip 24 | 25 | 2. Unpack and cd to `latex.typo3/font/` 26 | 27 | 3. In `convert-share-without-sudo.sh` change `INSTALL=1` to `INSTALL=0` and 28 | run `./convert-share-without-sudo.sh`. A folder `texmf` should appear. 29 | 30 | 4. Copy `typo3.sty` and `typo3_logo_color.png` into that folder. 31 | 32 | 5. Rename `texmf` to `texmf_typo3` and add this README, et voilà: This should 33 | be what we have here and is part of the Docker build. 34 | 35 | 36 | Usage 37 | ===== 38 | 39 | The Docker container is able to `make_latex`. It will add this `texmf_typo3` 40 | folder to the `make_latex_result` folder. 41 | 42 | The container cannot create PDFs, as this would require a much (>2GB) larger 43 | container. So you have to do that step yourself. Either install `texlive` 44 | in you system or find a Docker container that is able to do this step. 45 | 46 | To make use of the `texmf_typo3` folder you have to tell the pdf builder where 47 | to find this stuff. You can do this like so:: 48 | 49 | # in the container's LaTeX result folder point to the `texmf_typo3` 50 | # subfolder and run make to build the PDF(s) 51 | TEXINPUTS=::texmf_typo3 make 52 | 53 | 54 | End of README. 55 | -------------------------------------------------------------------------------- /ALL-for-build/Downloads/texmf_typo3/fonts/map/dvips/share/share.map: -------------------------------------------------------------------------------- 1 | typo3sharebi8t Share-BoldItalic typo3sharer8t}{} 6 | \DeclareFontShape{T1}{typo3share}{m}{sc}{<-> typo3shareb8t}{} 7 | \DeclareFontShape{T1}{typo3share}{m}{sl}{<-> typo3sharero8t}{} 8 | \DeclareFontShape{T1}{typo3share}{m}{it}{<-> typo3shareri8t}{} 9 | \DeclareFontShape{T1}{typo3share}{b}{n}{<-> typo3shareb8t}{} 10 | \DeclareFontShape{T1}{typo3share}{b}{sc}{<-> typo3shareb8t}{} 11 | \DeclareFontShape{T1}{typo3share}{b}{sl}{<-> typo3sharebo8t}{} 12 | \DeclareFontShape{T1}{typo3share}{b}{it}{<-> typo3sharebi8t}{} 13 | \DeclareFontShape{T1}{typo3share}{sb}{n}{<->ssub * typo3share/b/n}{} 14 | \DeclareFontShape{T1}{typo3share}{sb}{sc}{<->ssub * typo3share/b/sc}{} 15 | \DeclareFontShape{T1}{typo3share}{sb}{sl}{<->ssub * typo3share/b/sl}{} 16 | \DeclareFontShape{T1}{typo3share}{sb}{it}{<->ssub * typo3share/b/it}{} 17 | \DeclareFontShape{T1}{typo3share}{bx}{n}{<->ssub * typo3share/b/n}{} 18 | \DeclareFontShape{T1}{typo3share}{bx}{sc}{<->ssub * typo3share/b/sc}{} 19 | \DeclareFontShape{T1}{typo3share}{bx}{sl}{<->ssub * typo3share/b/sl}{} 20 | \DeclareFontShape{T1}{typo3share}{bx}{it}{<->ssub * typo3share/b/it}{} 21 | 22 | \endinput 23 | -------------------------------------------------------------------------------- /ALL-for-build/Downloads/texmf_typo3/typo3.sty: -------------------------------------------------------------------------------- 1 | % 2 | % typo3.sty 3 | % 4 | % Adapted from sphinx.sty, written by Xavier Perseguers. 5 | % 6 | 7 | \NeedsTeXFormat{LaTeX2e}[1995/12/01] 8 | \ProvidesPackage{typo3}[2013/07/02 LaTeX package (TYPO3 branding)] 9 | 10 | % Microtypography to disable ligatures 11 | \RequirePackage{microtype} 12 | 13 | % TYPO3 font and logo 14 | \newcommand{\sharefont}{\fontfamily{typo3share}\selectfont} 15 | \newcommand{\typothreelogo}{\includegraphics[height=.4cm]{typo3_logo_color}} 16 | 17 | % Share font family does not support ligatures 18 | \DisableLigatures{encoding = *, family = typo3share} 19 | 20 | % Make some special characters work 21 | \DeclareUnicodeCharacter{2264}{$\leq$} % ≤ 22 | \DeclareUnicodeCharacter{2265}{$\geq$} % ≥ 23 | 24 | \IfFileExists{mathabx}{% 25 | \RequirePackage{mathabx}% 26 | \DeclareUnicodeCharacter{23CE}{$\dlsh$} % ⏎ 27 | }{% 28 | \PackageWarning{typo3}{% 29 | Package mathabx not available, therefore\MessageBreak 30 | substituting command dlsh for carriage return symbol\MessageBreak 31 | }% 32 | \DeclareUnicodeCharacter{23CE}{\P} % ¶ 33 | } 34 | 35 | % -------------------------------------------- 36 | % Override configuration from sphinx.sty 37 | % -------------------------------------------- 38 | 39 | \definecolor{typo3orange}{RGB}{255, 135, 0} 40 | 41 | % Set headline colors 42 | % Hugh chapter headlines in orange (see \ChTitleVar below), 43 | % all other, low-level headlines in black is also what t3o uses. 44 | \definecolor{TitleColor}{RGB}{0, 0, 0} 45 | 46 | % Set link colors 47 | \definecolor{OuterLinkColor}{RGB}{255, 135, 0} 48 | \definecolor{InnerLinkColor}{RGB}{255, 135, 0} 49 | \hypersetup{ 50 | linkcolor=typo3orange, % Normal links, also internal links 51 | citecolor=typo3orange, % color of links to bibliography 52 | filecolor=typo3orange, % color of file links 53 | urlcolor=typo3orange, % Web URLs, E-Mail addresses 54 | } 55 | % Note that the central cron_rebuild.sh file contains a special rule 56 | % to change the links to black for the \tableofcontents. 57 | 58 | \renewcommand{\py@HeaderFamily}{\sharefont\bfseries} 59 | 60 | % Color of hugh chapter headlines (chapter headlines are the big main headlines like INTRODUCTION) 61 | \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily\color{typo3orange}} 62 | 63 | % Redefine the 'normal' header/footer style when using "fancyhdr" package: 64 | \@ifundefined{fancyhf}{}{ 65 | % Use \pagestyle{normal} as the primary pagestyle for text. 66 | \fancypagestyle{normal}{ 67 | \fancyhf{} 68 | \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} 69 | \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} 70 | \fancyfoot[RE]{{% 71 | \sharefont inspiring people to \textbf{\emph{share}}.% 72 | \quad% 73 | \typothreelogo% 74 | }} 75 | \fancyhead[LE]{{\py@HeaderFamily \@title, \py@release}} 76 | \fancyhead[RO]{{\py@HeaderFamily\nouppercase{\leftmark}}} 77 | \renewcommand{\headrulewidth}{0.4pt} 78 | \renewcommand{\footrulewidth}{0.4pt} 79 | % define chaptermark with \@chappos when \@chappos is available for Japanese 80 | \ifx\@chappos\undefined\else 81 | \def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}} 82 | \fi 83 | } 84 | % Update the plain style so we get the page number & footer line, 85 | % but not a chapter or section title. This is to keep the first 86 | % page of a chapter and the blank page between chapters `clean.' 87 | \fancypagestyle{plain}{ 88 | \fancyhf{} 89 | \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} 90 | \renewcommand{\headrulewidth}{0pt} 91 | \renewcommand{\footrulewidth}{0.4pt} 92 | } 93 | } 94 | 95 | % This is based on definition in sphinxmanual.cls. 96 | % ideally a test should be made if sphinxhowto.cls is used to 97 | % 1) use the same design; 98 | % 2) possibly not change the position of the Sphinx properties table. 99 | \renewcommand{\maketitle}{% 100 | \let\spx@tempa\relax 101 | \ifHy@pageanchor\def\spx@tempa{\Hy@pageanchortrue}\fi 102 | \hypersetup{pageanchor=false}% avoid duplicate destination warnings 103 | \begin{titlepage}% 104 | \let\footnotesize\small 105 | \let\footnoterule\relax 106 | \rule{\textwidth}{1pt}% 107 | \par 108 | \begingroup % for PDF information dictionary 109 | \def\endgraf{ }\def\and{\& }% 110 | \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup 111 | \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% 112 | \endgroup 113 | \begin{flushright}% 114 | \sphinxlogo% 115 | {\rm\Huge\py@HeaderFamily \@title \par}% 116 | {\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par} 117 | \vfill 118 | {\LARGE\py@HeaderFamily 119 | \begin{tabular}[t]{c} 120 | \@author 121 | \end{tabular} 122 | \par} 123 | \vfill\vfill 124 | {\large\py@HeaderFamily 125 | \@date \par 126 | \vfill 127 | \py@authoraddress \par 128 | }% 129 | \end{flushright}%\par 130 | \@thanks 131 | \end{titlepage}% 132 | \clearpage% 133 | % Include the Sphinx properties here 134 | \IfFileExists{\jobname.properties}{\input{\jobname.properties}}{} 135 | \cleardoublepage% 136 | \setcounter{footnote}{0}% 137 | \let\thanks\relax\let\maketitle\relax 138 | } 139 | 140 | % Extract the Sphinx properties table (beginning of document) 141 | % into an external file to put it right after the title part 142 | % (see override of \maketitle below) 143 | \makeatletter 144 | \RequirePackage{listings} 145 | \lst@RequireAspects{writefile} 146 | 147 | \lstnewenvironment{sphinxproperties}{% 148 | % Write file to given filename 149 | \lst@BeginWriteFile{\jobname.properties}% 150 | } 151 | {% 152 | \lst@EndWriteFile% closes output file 153 | } 154 | 155 | % Override the includegraphics definition 156 | % to include higher resolution images 157 | \let\py@Oldincludegraphics\includegraphics 158 | \renewcommand\includegraphics[2][\@empty]{% 159 | \ifx\@empty #1% attention, #1 could be bb.., bad if first after \ifx 160 | \setbox\spx@image@box=\hbox{\py@Oldincludegraphics{#2}}% 161 | \ifdim .5\wd\spx@image@box>\linewidth% 162 | \py@Oldincludegraphics[width=\linewidth]{#2}% 163 | \else% 164 | \py@Oldincludegraphics[width=.5\wd\spx@image@box]{#2}% 165 | \fi% 166 | \else% 167 | \py@Oldincludegraphics[#1]{#2}% 168 | \fi% 169 | } 170 | 171 | \makeatother -------------------------------------------------------------------------------- /ALL-for-build/Downloads/texmf_typo3/typo3_logo_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t3docs/docker-render-documentation/243142aaa1a16b6d6f6d5bcd32c3e21289afa89d/ALL-for-build/Downloads/texmf_typo3/typo3_logo_color.png -------------------------------------------------------------------------------- /ALL-for-build/Examples/Settings.cfg.001.minimal.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # This code isn't released yet. 3 | # 4 | # 5 | # This is work in progress (WIP). 6 | # 7 | # 888 888 8888888 8888888b. 8 | # 888 o 888 888 888 Y88b 9 | # 888 d8b 888 888 888 888 10 | # 888 d888b 888 888 888 d88P 11 | # 888d88888b888 888 8888888P" 12 | # 88888P Y88888 888 888 13 | # 8888P Y8888 888 888 14 | # 888P Y888 8888888 888 15 | # 16 | 17 | 18 | [general] 19 | # 20 | # Settings for [general] are treated as if they would have been added to 21 | # 'conf.py'. 22 | # 23 | 24 | # Always set a value for 'project'. 25 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-project 26 | project = Admin Panel 27 | 28 | # Always set a value for 'version'. 29 | # https://www.sphinx-doc.org/en/master/usage/configuration.html?highlight=release#confval-version 30 | # Originally thought to look like '2.6'. We usually use a more generalized form, 31 | # usually the branch name. 32 | # If a different value for 'version' and 'release' doesn't make sense, set the 33 | # same value for both. 34 | version = master 35 | 36 | # Always set a value for 'release'. 37 | # https://www.sphinx-doc.org/en/master/usage/configuration.html?highlight=release#confval-release 38 | # Originally thought to look like '2.6.dev2'. We usually use a more generalized 39 | # form, usually the branch name. 40 | # If a different value for 'version' and 'release' doesn't make sense, set the 41 | # same value for both. 42 | release = master 43 | 44 | # Always set a value for 'author'. 45 | # https://www.sphinx-doc.org/en/master/usage/configuration.html?highlight=release#confval-copyright 46 | # This is about being the author of the documentation. 47 | # For a while Sphinx did not specify that setting. So we introduced 't3author' 48 | # to account for authorship. Until everything is updated and unified, use 49 | # 'author' plus 't3author' and set the same value for both. 50 | author = TYPO3 Core Team 51 | t3author = TYPO3 Core Team 52 | 53 | # Always set a vlue for 'copyright'. 54 | # https://www.sphinx-doc.org/en/master/usage/configuration.html?highlight=release#confval-copyright 55 | # Shows up like this: "© Copyright {{ copyright }}" 56 | copyright = 2021, TYPO3 Core Team 57 | 58 | 59 | # Recommended. 60 | # This should be a short description in some sentences about what the project 61 | # is about and does. It is not shown in HTML output, but may appear on the 62 | # frontpage of man, epub or pdf output. 63 | description = 64 | This is the documentation of TYPO3's system extension 'adminpanel'. It 65 | displays a bar at the bottom of the screen on the frontend, from which you 66 | can access information per page. 67 | 68 | 69 | [html_theme_options] 70 | 71 | # Settings for [html_theme_options] are passed though to the html generation 72 | # by the theme. 73 | # 74 | # 75 | 76 | # Add 'Edit on XXX' button 77 | # At most one is shown. Precedence: GitHub, BitBucket, GitLab 78 | # Leave empty what you don't have or what is considered 'False". 79 | # 80 | 81 | ## Point to the Documentation start folder. 82 | ## Usually by convention: 83 | # path_to_documentation_dir = Documentation 84 | # 85 | # Point to the Documentation start folder. 86 | # In this case: 87 | path_to_documentation_dir = typo3/sysext/adminpanel/Documentation 88 | 89 | 90 | # Add 'Edit on Github' button 91 | # 92 | # Method 1: Recommended 93 | # https://{{ github_host|default("github.com") }}/{{ github_user }}/{{ github_repo }}/blob/{{ github_version }}{{ subpath }}{{ pagename }}{{ source_suffix }} 94 | github_host = github.com 95 | github_user = typo3 96 | gthub_repo = typo3 97 | github_version = main 98 | # 99 | # Method 2: DEPRECATED 100 | # Occurrences should be rewritten to 'Method 1' 101 | # github_branch = master 102 | # github_repository = typo3/typo3 103 | 104 | # Add 'Edit on BitBucket' button 105 | # https://{{ bitbucket_host|default("bitbucket.org") }}/{{ bitbucket_user }}/{{ bitbucket_repo }}/src/{{ bitbucket_version}}{{ subpath }}{{ pagename }}{{ source_suffix }}"> 106 | bitbucket_host = 107 | bitbucket_user = 108 | bitbucket_repo = 109 | bitbucket_version = 110 | 111 | # Add 'Edit on GitLab' button 112 | # As of 2021-11 the GitLab button is not yet generated by the theme 113 | # sphinx_typo3_theme. But the following settings should be used: 114 | # 115 | gitlab_host = 116 | gitlab_user = 117 | gitlab_repo = 118 | gitlab_version = 119 | 120 | 121 | # Show as related links 122 | # 123 | 124 | # Optional: url for link 'Contact' 125 | project_contact = 126 | 127 | # Optional: url for link 'Discussions' 128 | project_discussions = 129 | 130 | # Optional: url for link 'Home' 131 | project_home = https://forge.typo3.org/projects/typo3cms-core 132 | 133 | # Optional: url for link 'Issues' 134 | project_issues = https://forge.typo3.org/projects/typo3cms-core/issues 135 | 136 | # Optional: url for link 'Repository' 137 | project_repository = https://github.com/typo3/typo3 138 | 139 | 140 | [intersphinx_mapping] 141 | 142 | # Uncomment only those you actually do use, as for each rendering an external 143 | # download is triggered for each entry. 144 | 145 | # By convention we use these names: 146 | # 147 | h2document = https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/ 148 | # t3coreapi = https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ 149 | # t3editors = https://docs.typo3.org/m/typo3/tutorial-editors/master/en-us/ 150 | # t3extbasebook = https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/ 151 | t3install = https://docs.typo3.org/m/typo3/guide-installation/master/en-us/ 152 | # t3l10n = https://docs.typo3.org/m/typo3/guide-frontendlocalization/master/en-us/ 153 | # t3sitepackage = https://docs.typo3.org/m/typo3/tutorial-sitepackage/master/en-us/ 154 | # t3start = https://docs.typo3.org/m/typo3/tutorial-getting-started/master/en-us/ 155 | # t3tca = https://docs.typo3.org/m/typo3/reference-tca/master/en-us/ 156 | # t3templating = https://docs.typo3.org/m/typo3/tutorial-templating-with-fluid/master/en-us/ 157 | # t3ts45 = https://docs.typo3.org/m/typo3/tutorial-typoscript-in-45-minutes/master/en-us/ 158 | t3tsconfig = https://docs.typo3.org/m/typo3/reference-tsconfig/master/en-us/ 159 | t3tsref = https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ 160 | -------------------------------------------------------------------------------- /ALL-for-build/Examples/Settings.cfg.002.cfg: -------------------------------------------------------------------------------- 1 | # Example file Settings.cfg.002.cfg 2 | 3 | # for DRC >= v3.0.dev10 4 | 5 | # This code isn't released yet. 6 | # 7 | # 8 | # This is work in progress (WIP). 9 | # 10 | # 888 888 8888888 8888888b. 11 | # 888 o 888 888 888 Y88b 12 | # 888 d8b 888 888 888 888 13 | # 888 d888b 888 888 888 d88P 14 | # 888d88888b888 888 8888888P" 15 | # 88888P Y88888 888 888 16 | # 8888P Y8888 888 888 17 | # 888P Y888 8888888 888 18 | # 19 | 20 | 21 | [general] 22 | 23 | ; endless list of configuration settings that Sphinx expects to find in 24 | ; 'conf.py' 25 | 26 | author = John Doe 27 | author = TYPO3 Documentation Team 28 | 29 | copyright = 2020, TYPO3 Documentation Team 30 | language = en 31 | project = Sphinx TYPO3 Theme Rendering Test 32 | 33 | release = 1.2.3 34 | release = main 35 | 36 | version = 1.2 37 | version = main 38 | 39 | # Graphviz 40 | # https://www.sphinx-doc.org/en/master/usage/extensions/graphviz.html 41 | 42 | graphviz_output_format = png 43 | graphviz_output_format = svg 44 | 45 | # 'graphviz_dot_args' is read as string, then transformed to list by 'conf.py'. 46 | graphviz_dot_args = [ 47 | "-Gcolor=#000000", 48 | "-Gfillcolor=#FFFFFF", 49 | "-Gfontname=sans-serif", 50 | "-Gfontsize=10.0", 51 | "-Gfontcolor=#333333", 52 | "-Nstyle=filled", 53 | "-Ncolor=#A80036", 54 | "-Nfillcolor=#FEFECE", 55 | "-Nfontname=sans-serif", 56 | "-Nfontsize=10.0", 57 | "-Nfontcolor=#333333", 58 | "-Ecolor=#F49700", 59 | "-Efontname=sans-serif", 60 | "-Efontsize=9.0", 61 | "-Efontcolor=#333333", 62 | ] 63 | 64 | # Plantuml 65 | # https://pypi.org/project/sphinxcontrib-plantuml/ 66 | # 67 | # plantuml_latex_output_format = eps pdf png none 68 | plantuml_latex_output_format = eps 69 | # 70 | # plantuml_output_format = png svg svg_img svg_obj none 71 | plantuml_output_format = svg 72 | 73 | 74 | [docstypo3-meta] 75 | 76 | # These settings are recognized by extension sphinxcontrib.docstypo3 77 | # Will go to {'conf_py': {'docstypo3': {'meta':{key: value, ...}}} 78 | # Access in replacements as |dt3m_audience|, |dt3m_description|, … 79 | 80 | audience = Developers and editors of TYPO3 documentation 81 | description = This project 82 | demonstrates how [reStructuredText markup](https://docutils.sourceforge.io/rst.html) 83 | looks like when rendered with the 84 | [sphinx_typo3_theme](https://github.com/TYPO3-Documentation/sphinx_typo3_theme). 85 | The focus is on technical aspects and behaviour. It is used for theme 86 | testing. Everything in here "should work". 87 | 88 | NOTE: This project DOES NOT show TYPO3 best practices. The purpose is 89 | (a) to demonstrate what the theme can handle and 90 | (b) to serve as a test for the theme. 91 | 92 | doctype = Technical rendering test example 93 | language = English (us) 94 | license = CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 95 | maintainer = Martin Bless 96 | website = Read online (https://typo3-documentation.github.io/sphinx_typo3_theme_rendering_test/) 97 | 98 | 99 | [html_theme_options] 100 | 101 | ; for [sphinx_typo3_theme](https://github.com/TYPO3-Documentation/sphinx_typo3_theme) 102 | 103 | # Link buttons in the footer 104 | project_contact = https://typo3.org/community/teams/documentation 105 | project_discussions = https://github.com/TYPO3-Documentation/sphinx_typo3_theme_rendering_test/discussions 106 | project_home = https://github.com/TYPO3-Documentation/sphinx_typo3_theme_rendering_test 107 | project_issues = https://github.com/TYPO3-Documentation/sphinx_typo3_theme_rendering_test/issues 108 | project_repository = https://github.com/TYPO3-Documentation/sphinx_typo3_theme_rendering_test 109 | 110 | 111 | # Opensearch code is currently disabled 112 | use_opensearch = 113 | 114 | # t3docs_locale = "" means "en_US" 115 | # Have t3docs_locale = "" in Documentation/Settings.cfg 116 | # Have t3docs_locale = "de_DE" in Documentation/Localization.de_DE/Settings.cfg 117 | # Have t3docs_locale = "fr_FR" in Documentation/Localization.fr_FR/Settings.cfg 118 | t3docs_locale = de_DE 119 | t3docs_locale = fr_FR 120 | t3docs_locale = 121 | 122 | # Edit on GitHub button 123 | edit_github = 124 | edit_github = 1 125 | github_host = github.com 126 | github_user = TYPO3-Documentation 127 | github_repo = sphinx_typo3_theme_rendering_test 128 | github_version = master 129 | 130 | # Edit on BitBucket button 131 | edit_bitbucket = 132 | bitbucket_host = bitbucket.org 133 | bitbucket_user = 134 | bitbucket_repo = 135 | bitbucket_version = 136 | 137 | # Edit on GitLab button 138 | edit_gitlab = 139 | gitlab_host = gitlab.com 140 | gitlab_user = 141 | gitlab_repo = 142 | gitlab_version = 143 | 144 | # DEPRECATED settings - don't use these any more 145 | github_branch = 146 | github_commit_hash = ((was never implemented)) 147 | github_repository = 148 | github_revision_msg = ((was never implemented)) 149 | github_sphinx_locale = 150 | 151 | # relative to the documentation top folder within the repo 152 | path_to_documentation_dir = typo3/sysext/adminpanel/Documentation 153 | path_to_documentation_dir = Documentation 154 | 155 | # Example: 156 | # Assume: 157 | # REPO/Documentation/Index.rst 158 | # REPO/Documentation/Settings.rst 159 | # path_to_subproject = 160 | # path_to_documentation_dir = Documentation 161 | # t3docs_locale = 162 | # masterdoc = Index.rst 163 | # 164 | # Example: 165 | # Assume: 166 | # REPO/typo3/sysext/adminpanel/Documentation/Index.rst 167 | # REPO/typo3/sysext/adminpanel/Documentation/Settings.rst 168 | # path_to_subproject = typo3/sysext/adminpanel 169 | # path_to_documentation_dir = Documentation 170 | # t3docs_locale = 171 | # masterdoc = Index.rst 172 | # 173 | # Example: 174 | # Assume: 175 | # REPO/typo3/sysext/adminpanel/Documentation/Localization.fr_FR/deeper/Index.rst 176 | # REPO/typo3/sysext/adminpanel/Documentation/Localization.fr_FR/deeper/Settings.cfg 177 | # path_to_subproject = typo3/sysext/adminpanel 178 | # path_to_documentation_dir = Documentation/Localization.fr_FR 179 | # t3docs_locale = fr_FR 180 | # masterdoc = deeper/Index.rst 181 | # 182 | 183 | # t3docs_locale_path_part = "" 184 | # t3docs_locale_path_part = "Localization.de_DE/" 185 | # t3docs_locale_path_part = "Localization.de_DE/" 186 | 187 | 188 | 189 | [intersphinx_mapping] 190 | 191 | # Define whatever you need and whatever you like. 192 | # However, by convention we use the following names for standard manuals. 193 | # Uncomment only those you actually do use, as for each rendering an external 194 | # download is triggered for each entry. 195 | # 196 | # h2document = https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/ 197 | # t3coreapi = https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ 198 | # t3editors = https://docs.typo3.org/m/typo3/tutorial-editors/master/en-us/ 199 | # t3extbasebook = https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/ 200 | # t3install = https://docs.typo3.org/m/typo3/guide-installation/master/en-us/ 201 | # t3l10n = https://docs.typo3.org/m/typo3/guide-frontendlocalization/master/en-us/ 202 | # t3sitepackage = https://docs.typo3.org/m/typo3/tutorial-sitepackage/master/en-us/ 203 | # t3start = https://docs.typo3.org/m/typo3/tutorial-getting-started/master/en-us/ 204 | # t3tca = https://docs.typo3.org/m/typo3/reference-tca/master/en-us/ 205 | # t3templating = https://docs.typo3.org/m/typo3/tutorial-templating-with-fluid/master/en-us/ 206 | # t3ts45 = https://docs.typo3.org/m/typo3/tutorial-typoscript-in-45-minutes/master/en-us/ 207 | # t3tsconfig = https://docs.typo3.org/m/typo3/reference-tsconfig/master/en-us/ 208 | # t3tsref = https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ 209 | 210 | 211 | [extlinks] 212 | # 213 | # ; Example: 214 | # ; :forge:`12345` will be rendered as 215 | # ; forge#12345 216 | # 217 | # ; name = url | prefix 218 | # 219 | # example1 = https://example.org/%s | example# 220 | # example2 = https://example.org/%s | example↗ 221 | # example3 = https://example.org/%s | example: 222 | forge = https://forge.typo3.org/issues/%s | forge# 223 | issue = https://forge.typo3.org/issues/%s | forge# 224 | packagist = https://packagist.org/packages/%s | 225 | review = https://review.typo3.org/%s | review: 226 | t3ext = https://extensions.typo3.org/extension/%s | EXT: 227 | theme-issue = https://github.com/TYPO3-Documentation/sphinx_typo3_theme/issues/%s | theme# 228 | 229 | -------------------------------------------------------------------------------- /ALL-for-build/Examples/explore-docutils-conf-general.json: -------------------------------------------------------------------------------- 1 | { 2 | "1-default": { 3 | "_config_files": [ 4 | "/some/path/docutils-dev.conf" 5 | ], 6 | "_destination": null, 7 | "_disable_config": null, 8 | "_source": null, 9 | "auto_id_prefix": "id", 10 | "config": null, 11 | "datestamp": null, 12 | "debug": null, 13 | "dump_internals": null, 14 | "dump_pseudo_xml": null, 15 | "dump_settings": null, 16 | "dump_transforms": null, 17 | "error_encoding": "utf-8", 18 | "error_encoding_error_handler": "backslashreplace", 19 | "exit_status_level": 5, 20 | "expose_internals": null, 21 | "footnote_backlinks": 1, 22 | "generator": null, 23 | "halt_level": 4, 24 | "id_prefix": "", 25 | "input_encoding": null, 26 | "input_encoding_error_handler": "strict", 27 | "language_code": "en", 28 | "output_encoding": "utf-8", 29 | "output_encoding_error_handler": "strict", 30 | "record_dependencies_AS_STRING": "DependencyList(None, [])", 31 | "report_level": 2, 32 | "sectnum_xform": 1, 33 | "source_link": null, 34 | "source_url": null, 35 | "strict_visitor": null, 36 | "strip_classes": null, 37 | "strip_comments": null, 38 | "strip_elements_with_classes": null, 39 | "title": null, 40 | "toc_backlinks": "entry", 41 | "traceback": null, 42 | "warning_stream": null 43 | }, 44 | "2-config-file": { 45 | "raw_enabled": "0", 46 | "record_dependencies_AS_STRING": "DependencyList(None, [])", 47 | "smart_quotes": "0", 48 | "strip_classes": [ 49 | "container" 50 | ] 51 | }, 52 | "3-effective": { 53 | "_config_files": [ 54 | "/home/marble/Repositories/github.com/TYPO3-Documentation/sphinxcontrib-docstypo3/sphinxcontrib/docstypo3/docutils-dev.conf" 55 | ], 56 | "_destination": null, 57 | "_disable_config": null, 58 | "_source": null, 59 | "auto_id_prefix": "id", 60 | "config": null, 61 | "datestamp": null, 62 | "debug": null, 63 | "dump_internals": null, 64 | "dump_pseudo_xml": null, 65 | "dump_settings": null, 66 | "dump_transforms": null, 67 | "error_encoding": "utf-8", 68 | "error_encoding_error_handler": "backslashreplace", 69 | "exit_status_level": 5, 70 | "expose_internals": null, 71 | "footnote_backlinks": 1, 72 | "generator": null, 73 | "halt_level": 4, 74 | "id_prefix": "", 75 | "input_encoding": null, 76 | "input_encoding_error_handler": "strict", 77 | "language_code": "en", 78 | "output_encoding": "utf-8", 79 | "output_encoding_error_handler": "strict", 80 | "raw_enabled": "0", 81 | "record_dependencies_AS_STRING": "DependencyList(None, [])", 82 | "report_level": 2, 83 | "sectnum_xform": 1, 84 | "smart_quotes": "0", 85 | "source_link": null, 86 | "source_url": null, 87 | "strict_visitor": null, 88 | "strip_classes": [ 89 | "container" 90 | ], 91 | "strip_comments": null, 92 | "strip_elements_with_classes": null, 93 | "title": null, 94 | "toc_backlinks": "entry", 95 | "traceback": null, 96 | "warning_stream": null 97 | } 98 | } -------------------------------------------------------------------------------- /ALL-for-build/Makedir/.gitignore: -------------------------------------------------------------------------------- 1 | temp_* 2 | build.checksum -------------------------------------------------------------------------------- /ALL-for-build/Makedir/Defaults.cfg: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | # ##### 4 | # 5 | # Defaults.cfg - A TYPO3 Documentation Project's Configuration File 6 | # 7 | # About Syntax: 8 | # See https://docs.python.org/2/library/configparser.html 9 | # 10 | # Put comments in separate lines! 11 | # 12 | # ##### 13 | 14 | 15 | # ATTENTION: 16 | # LEAVE RIGHT SIDE EMPTY for a 'False' value like: 17 | # example_of_false_value = 18 | 19 | 20 | [general] 21 | 22 | ; endless list of all of the general simple settings you can use in 'conf.py' 23 | 24 | # Graphviz 25 | # https://www.sphinx-doc.org/en/master/usage/extensions/graphviz.html 26 | 27 | # graphviz_output_format = png svg 28 | graphviz_output_format = svg 29 | 30 | # Plantuml 31 | # https://pypi.org/project/sphinxcontrib-plantuml/ 32 | 33 | # plantuml_output_format = png svg svg_img svg_obj none 34 | plantuml_output_format = svg 35 | 36 | # plantuml_latex_output_format = eps pdf png none 37 | plantuml_latex_output_format = eps 38 | 39 | # 'graphviz_dot_args' is a string, but transformed to a list by this 'conf.py'. 40 | graphviz_dot_args = [ 41 | "-Gcolor=#000000", 42 | "-Gfillcolor=#FFFFFF", 43 | "-Gfontname=sans-serif", 44 | "-Gfontsize=10.0", 45 | "-Gfontcolor=#333333", 46 | "-Nstyle=filled", 47 | "-Ncolor=#A80036", 48 | "-Nfillcolor=#FEFECE", 49 | "-Nfontname=sans-serif", 50 | "-Nfontsize=10.0", 51 | "-Nfontcolor=#333333", 52 | "-Ecolor=#F49700", 53 | "-Efontname=sans-serif", 54 | "-Efontsize=9.0", 55 | "-Efontcolor=#333333", 56 | ] 57 | 58 | 59 | [extlinks] 60 | # 61 | # ; Example: 62 | # ; :forge:`12345` will be rendered as 63 | # ; forge#12345 64 | # 65 | # ; name = url | prefix 66 | # 67 | # example1 = https://example.org/%s | example# 68 | # example2 = https://example.org/%s | example↗ 69 | # example3 = https://example.org/%s | example: 70 | forge = https://forge.typo3.org/issues/%s | forge# 71 | issue = https://forge.typo3.org/issues/%s | forge# 72 | packagist = https://packagist.org/packages/%s | 73 | review = https://review.typo3.org/%s | review: 74 | t3ext = https://extensions.typo3.org/extension/%s | EXT: 75 | theme-issue = https://github.com/TYPO3-Documentation/sphinx_typo3_theme/issues/%s | theme# 76 | 77 | 78 | [html_theme_options] 79 | 80 | path_to_documentation_dir = Documentation/ 81 | 82 | # edit_button_type = 83 | # auto # Show edit button, guess url scheme from url (default) 84 | # bitbucket # Show edit button, assume Bitbucket url scheme and icon 85 | # github # Show edit button, assume GitHub url scheme and icon 86 | # gitlab # Show edit button, assume GitLab url scheme and icon 87 | # none # Do not show the edit button 88 | edit_button_type = auto 89 | 90 | # Specify the url of the repository and specify the branch name 91 | # Example: 92 | # repository_url = https://github.com/TYPO3-Documentation/sphinx_typo3_theme 93 | # repository_branch = main 94 | repository_url = 95 | repository_branch = 96 | 97 | # Deprecated: Specify the user/name of a GitHub repository and the branch name 98 | # Example: 99 | # github_repository = TYPO3-Documentation/sphinx_typo3_theme 100 | # github_branch = main 101 | github_repository = 102 | github_branch = 103 | 104 | 105 | [sphinx_object_types_to_add] 106 | 107 | # DIRECTIVE_NAME = DIRECTIVE_NAME // TEXTROLE_NAME // OBJECT_NAME 108 | confval = confval // confval // Configuration value 109 | cvtca = cvtca // cvtca // TCA configuration value 110 | cvtcainline = cvtcainline // cvtcainline // TCA 'inline' configuration value 111 | cvtcainput = cvtcainput // cvtcainput // TCA 'input' configuration value 112 | 113 | 114 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/Overrides.cfg: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | # ##### 4 | # 5 | # Overrides.cfg - A TYPO3 Documentation Project's Configuration File 6 | # 7 | # About Syntax: 8 | # See https://docs.python.org/2/library/configparser.html 9 | # 10 | # Put comments in separate lines! 11 | # 12 | # ##### 13 | 14 | 15 | # ATTENTION: 16 | # LEAVE RIGHT SIDE EMPTY for a 'False' value like: 17 | # example_of_false_value = 18 | 19 | 20 | [general] 21 | 22 | ; endless list of all of the general simple settings 23 | ; you can use in 'conf.py' 24 | html_theme = sphinx_typo3_theme 25 | pygments_style = none 26 | 27 | 28 | [html_theme_options] 29 | 30 | ; for theme sphinx_typo3_theme 31 | 32 | ; IMPORTANT! 33 | ; Leave empty for False value! 34 | ; 35 | ; Rendering for docs.typo3.org? 36 | ; docstypo3org = anything_truthy # means YES! 37 | ; docstypo3org = # means NO! 38 | 39 | docstypo3org = 40 | show_legalinfo = 41 | 42 | show_copyright = yes 43 | show_last_updated = yes 44 | show_revision = yes 45 | show_sourcelink = yes 46 | show_sphinx = yes 47 | h2edit_url = https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingDocsOfficial/GithubMethod.html 48 | 49 | 50 | [extensions] 51 | 52 | # Add to list of extensions[] as defined in 'conf.py'. 53 | # Mention the extensions you need. Some are loaded 54 | # by default and need not specifically be mentioned. 55 | # 56 | # Activate additionally (if available): 57 | # any_name_graphviz = sphinx.ext.graphviz 58 | # any_name_2 = 59 | # any_name_3 = 60 | 61 | # since this file Overrides.cfg is under control of the admin 62 | # Sphinx extensions can even be loaded if they are not in the 63 | # list of legal Sphinx extensions. The list is given in conf.py. 64 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/_htaccess: -------------------------------------------------------------------------------- 1 | Options +Indexes 2 | 3 | RewriteEngine On 4 | 5 | # Do not rewrite URLs starting with any valid version number followed by a slash 6 | RewriteRule ^[0-9]+(\.[0-9]+)(\.[0-9]+)*(-dev)?/(.*)$ - [L] 7 | 8 | # Do not rewrite URLs like '8-dev/' 9 | RewriteRule ^[0-9]+-dev/(.*)$ - [L] 10 | 11 | # Do not rewrite URLs starting with the provided words 12 | RewriteRule ^(latest|master|packages|stable)(.*)$ - [L] 13 | 14 | # still needed? 15 | RewriteRule ^manuals.json(.*)$ - [L] 16 | 17 | # Rewrite other cases into the folder stable/ 18 | RewriteRule ^(.*)$ stable/$1 19 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/_info.txt: -------------------------------------------------------------------------------- 1 | _info.txt 2 | 3 | 2019-05-23 4 | 5 | This folder 'Makedir/' and all files and folders within need to 6 | be world writable. 7 | 8 | The toolchain 'RenderDocumentation' requires this 'makedir' folder. 9 | 10 | The toolchain reads the settings of './buildsettings.sh' 11 | and expects './conf.py' to exist. 12 | 13 | The toolchain creates file './build.checksum' and others named './temp_*'. 14 | 15 | conf-2017-09.py is 16 | https://raw.githubusercontent.com/TYPO3-Documentation/typo3-docs-typo3-org-resources/master/userroot/scripts/bin/conf-2017-09.py 17 | as of today (2019-05-23). It is here for information and comparison with 18 | conf.py only. conf.py initially is a copy of conf-2017-09.py but may be updated 19 | and modified here for the purpose of this Docker image. 20 | 21 | _htaccess is 22 | https://raw.githubusercontent.com/TYPO3-Documentation/typo3-docs-typo3-org-resources/master/userroot/scripts/config/_htaccess-2016-08.txt 23 | and a fresh download is made at build time. 24 | 25 | The toolchain 'RenderDocumentation' is more and more being 26 | modified to accept all needed parameters from the commandline. 27 | Therefore in future the 'makedir' folder may not be necessary 28 | any more. 29 | 30 | End. -------------------------------------------------------------------------------- /ALL-for-build/Makedir/buildsettings.sh: -------------------------------------------------------------------------------- 1 | # buildsettings.sh 2 | 3 | # Mandatory. We need one of these. Used in this order. 4 | TER_EXTKEY= 5 | GITURL= 6 | GITDIR=/PROJECT 7 | 8 | # keep these here like so 9 | PROJECT=project 10 | VERSION=0.0.0 11 | LOCALIZATION=default 12 | BUILDDIR=project/0.0.0 13 | 14 | # More specs 15 | GITBRANCH=master 16 | TER_EXTVERSION= 17 | 18 | # A TYPO3 default layout has this: 19 | T3DOCDIR=Documentation 20 | MASTERDOC=Documentation/Index 21 | 22 | # packaging 23 | PACKAGE_ZIP=0 24 | PACKAGE_KEY=project 25 | PACKAGE_LANGUAGE=default 26 | 27 | # symlink 'stable' to this version? 28 | TER_EXTENSION=0 29 | 30 | # not used any more 31 | LOGDIR=. 32 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # We have these sources of settings. Higher numbers take precedence. 4 | # ATTENTION: Settings.json can do almost everything 5 | # 6 | # (1) MAKEDIR/buildsettings.sh (buildtime) 7 | # (2) Hardcoded settings from this conf.py file (buildtime) 8 | # (3) Settings from MAKEDIR/Defaults.cfg (buildtime) 9 | # (4) User settings from ./Documentation/Settings.cfg (user) 10 | # (5) More hardcoded settings from this conf.py file (buildtime) 11 | # (6) Settings from MAKEDIR/Overrides.cfg (buildtime) 12 | # (7) Settings from Settings.json (operator at runtime) 13 | 14 | import codecs 15 | import json 16 | import os 17 | import toml 18 | from os.path import exists as ospe, isabs, join as ospj, normpath, split as ospsplit 19 | 20 | import six.moves.configparser 21 | import sphinx_typo3_theme 22 | from pygments.lexers.web import PhpLexer 23 | # enable highlighting for PHP code not between by default 24 | from sphinx.highlighting import lexers 25 | try: 26 | from io import StringIO 27 | except ImportError: 28 | from cStringIO import StringIO 29 | 30 | __version__ = "2021-12-16_18-45" 31 | 32 | lexers["php"] = PhpLexer(startinline=True) 33 | lexers["php-annotations"] = PhpLexer(startinline=True) 34 | 35 | CommonMarkParser = None 36 | # CommonMarkParser turns Sphinx caching off. 37 | # So we don't use it but use 'pandoc' in the toolchain. 38 | if 0: 39 | try: 40 | from recommonmark.parser import CommonMarkParser 41 | except ImportError: 42 | CommonMarkParser = None 43 | 44 | if CommonMarkParser: 45 | source_parsers = {".md": CommonMarkParser} 46 | source_suffix = [".rst", ".md"] 47 | else: 48 | source_suffix = [".rst"] 49 | # 50 | # 51 | # 52 | # 53 | # preparations 54 | # 55 | # the dictionary of variables of this module 'conf.py' 56 | G = globals() 57 | # where we merge the various settings 58 | US = user_settings = {} 59 | 60 | # must exist - used by setup() function 61 | sphinx_object_types_to_add = {} 62 | 63 | # 64 | # 65 | # 66 | # 67 | # (1) MAKEDIR/buildsettings.sh 68 | # 69 | section = "build" 70 | config = six.moves.configparser.RawConfigParser() 71 | f1name = "buildsettings.sh" 72 | with codecs.open(f1name, "r", "utf-8") as f1: 73 | data = f1.read() 74 | read_method = getattr(config, 'read_file', None) or getattr(config, 'readfp') 75 | read_method(StringIO(u"[" + section + u"]\n" + data)) 76 | 77 | # Required: 78 | MASTERDOC = config.get(section, "MASTERDOC") 79 | BUILDDIR = config.get(section, "BUILDDIR") 80 | GITDIR = config.get(section, "GITDIR") 81 | LOGDIR = config.get(section, "LOGDIR") 82 | MASTERDOC = config.get(section, "MASTERDOC") 83 | T3DOCDIR = config.get(section, "T3DOCDIR") 84 | 85 | # find absolute path to conf.py(c) 86 | confpyabspath = None 87 | try: 88 | confpyabspath = os.path.abspath(__file__) 89 | except: 90 | import inspect 91 | 92 | confpyabspath = os.path.abspath(inspect.getfile(inspect.currentframe())) 93 | 94 | confpyabspath = normpath(confpyabspath) 95 | confpyfolder = ospsplit(confpyabspath)[0] 96 | 97 | if isabs(MASTERDOC): 98 | masterdocabspath = normpath(MASTERDOC) 99 | else: 100 | masterdocabspath = normpath(ospj(GITDIR, MASTERDOC)) 101 | 102 | if isabs(LOGDIR): 103 | logdirabspath = normpath(LOGDIR) 104 | else: 105 | logdirabspath = normpath(ospj(confpyfolder, LOGDIR)) 106 | 107 | # the absolute path to ./Documentation/ 108 | projectabspath = ospj(GITDIR, T3DOCDIR) 109 | # the absolute path to Documentation/Settings.cfg 110 | settingsabspath = projectabspath + "/" + "Settings.cfg" 111 | defaultsabspath = ospj(confpyfolder, "Defaults.cfg") 112 | overridesabspath = ospj(confpyfolder, "Overrides.cfg") 113 | # Makefile/Settings.json is the 'conf_py' part of jobfile.json 114 | settingsjsonabspath = ospj(confpyfolder, "Settings.json") 115 | 116 | 117 | def firstNotNone(*args): 118 | for a in args: 119 | if a is not None: 120 | return a 121 | return None 122 | 123 | def get_list_of_strings_from_string(s): 124 | result = [] 125 | s = s.strip() 126 | ok = s.startswith("[") and s.endswith("]") 127 | if ok: 128 | s = s[1:-1].strip() 129 | ok = not not s 130 | if ok: 131 | for part in s.split(','): 132 | part = part.strip() 133 | if part: 134 | ok = ( 135 | (part.startswith("'") and part.endswith("'")) 136 | or 137 | (part.startswith('"') and part.endswith('"')) 138 | ) 139 | if not ok: 140 | break 141 | result.append(part[1:-1]) 142 | if not ok: 143 | result = [] 144 | return result 145 | 146 | 147 | 148 | def merge_settings_file(fpath, D): 149 | if not ospe(fpath): 150 | return 151 | config = six.moves.configparser.RawConfigParser() 152 | config.readfp(codecs.open(fpath, "r", "utf-8")) 153 | for s in config.sections(): 154 | s2 = s.replace('-', '_') 155 | parts = s2.split('_') 156 | if parts[0] == 'docstypo3': 157 | D2 = D 158 | for part in parts: 159 | D2[part] = D2.get(part, {}) 160 | D2 = D2[part] 161 | for o in config.options(s): 162 | D2[o] = config.get(s, o) 163 | else: 164 | D[s2] = D.get(s2, {}) 165 | for o in config.options(s): 166 | D[s2][o] = config.get(s, o) 167 | 168 | v = D.get("general", {}).get("graphviz_dot_args", "") 169 | if v: 170 | del D["general"]["graphviz_dot_args"] 171 | v = get_list_of_strings_from_string(v) 172 | if v: 173 | D2 = D.get("graphviz_dot_args_as_dict", {}) 174 | D["graphviz_dot_args_as_dict"] = D2 175 | for elm in v: 176 | parts = elm.split("=", 1) 177 | if len(parts) == 2: 178 | D2[parts[0]] = parts[1] 179 | 180 | # 181 | # 182 | # 183 | # 184 | # (2) Hardcoded settings in this conf.py file 185 | # 186 | project = u"The Project's Title" 187 | copyright = u"Since ever by authors and copyright holders" 188 | t3shortname = u"t3shortname" 189 | t3author = u"The Author(s)" 190 | description = u"" 191 | 192 | version = "0.0" 193 | release = "0.0.0" 194 | 195 | html_theme = "sphinx_typo3_theme" 196 | pygments_style = "none" 197 | 198 | html_theme_options = { 199 | "docstypo3org": "", 200 | "edit_button_type": "", 201 | "github_branch": "", 202 | "github_repository": "", 203 | "h2edit_url": "", 204 | "path_to_documentation_dir": "", 205 | "project_contact": "", 206 | "project_discussions": "", 207 | "project_home": "", 208 | "project_issues": "", 209 | "project_repository": "", 210 | "repo_file_edit_url": "", 211 | "repository_branch": "", 212 | "repository_url": "", 213 | "show_copyright": "yes", 214 | "show_last_updated": "yes", 215 | "show_legalinfo": "yes", 216 | "show_revision": "yes", 217 | "show_sourcelink": "yes", 218 | "show_sphinx": "yes", 219 | "t3docs_locale": "", 220 | "use_opensearch": "", 221 | } 222 | 223 | html_use_opensearch = "" # like: 'https://docs.typo3.org/typo3cms/TyposcriptReference/0.0' no trailing slash! 224 | 225 | highlight_language = "php" 226 | html_use_smartypants = False 227 | language = None 228 | master_doc = os.path.splitext(ospsplit(masterdocabspath)[1])[0] 229 | todo_include_todos = False 230 | exclude_patterns = [] 231 | nitpick_ignore_regex = [('py:.*', '.*'), ('php:.*', '.*'), ('std:class', '.*')] 232 | 233 | # Keep in sync with Defaults.cfg: 234 | extensions_to_be_loaded = [ 235 | "sphinx.ext.autodoc", 236 | "sphinx.ext.coverage", 237 | "sphinx.ext.extlinks", 238 | "sphinx.ext.graphviz", 239 | "sphinx.ext.ifconfig", 240 | "sphinx.ext.intersphinx", 241 | "sphinx.ext.mathjax", 242 | "sphinx.ext.todo", 243 | "sphinx_copybutton", 244 | "sphinx_panels", 245 | "sphinx_tabs.tabs", 246 | "sphinx_typo3_theme", 247 | "sphinxcontrib.collections", 248 | "sphinxcontrib.docstypo3", 249 | "sphinxcontrib.gitloginfo", 250 | "sphinxcontrib.phpdomain", 251 | "sphinxcontrib.plantuml", 252 | "sphinxcontrib.slide", 253 | "sphinxcontrib.t3fieldlisttable", 254 | "sphinxcontrib.t3tablerows", 255 | # "sphinxcontrib.t3targets", 256 | "sphinxcontrib.youtube", 257 | ] 258 | 259 | # Legal extensions will be loaded if requested in Settings.cfg or Overrides.cfg 260 | # Actually, this is not activated at the moment. Any (available) extension may 261 | # be requested in Settings.cfg 262 | 263 | legal_extensions = [ 264 | # to be extended ... 265 | ] 266 | 267 | # Extensions to be loaded are legal of course. Just be clear. 268 | for e in extensions_to_be_loaded: 269 | if not e in legal_extensions: 270 | legal_extensions.append(e) 271 | 272 | # make a copy (!) 273 | extensions = extensions_to_be_loaded[:] 274 | 275 | extlinks = {} 276 | # extlinks["role"] = ("url/%s", "prefix") 277 | 278 | 279 | # Graphviz styles 280 | # 281 | # Assign default attributes to graphs, nodes and edges by 282 | # 283 | # - -G 284 | # - -N and 285 | # - -E. 286 | # 287 | # Find all attributes at https://graphviz.org/doc/info/attrs.html. 288 | # 289 | # Align with PlantUML styles. 290 | 291 | # use dict so we can do overrides 292 | graphviz_dot_args_as_dict = {} 293 | 294 | # graphviz_dot_args_as_dict = { 295 | # "-Gcolor" : "#000000", 296 | # "-Gfillcolor" : "#FFFFFF", 297 | # "-Gfontname" : "sans-serif", 298 | # "-Gfontsize" : "10.0", 299 | # "-Gfontcolor" : "#333333", 300 | # "-Nstyle" : "filled", 301 | # "-Ncolor" : "#A80036", 302 | # "-Nfillcolor" : "#FEFECE", 303 | # "-Nfontname" : "sans-serif", 304 | # "-Nfontsize" : "10.0", 305 | # "-Nfontcolor" : "#333333", 306 | # "-Ecolor" : "#F49700", 307 | # "-Efontname" : "sans-serif", 308 | # "-Efontsize" : "9.0", 309 | # "-Efontcolor" : "#333333", 310 | # } 311 | # 312 | # what we need in the end 313 | # [general] 314 | #graphviz_dot_args = [ 315 | # "-Gcolor=#000000", 316 | # "-Gfillcolor=#FFFFFF", 317 | # "-Gfontname=sans-serif", 318 | # "-Gfontsize=10.0", 319 | # "-Gfontcolor=#333333", 320 | # "-Nstyle=filled", 321 | # "-Ncolor=#A80036", 322 | # "-Nfillcolor=#FEFECE", 323 | # "-Nfontname=sans-serif", 324 | # "-Nfontsize=10.0", 325 | # "-Nfontcolor=#333333", 326 | # "-Ecolor=#F49700", 327 | # "-Efontname=sans-serif", 328 | # "-Efontsize=9.0", 329 | # "-Efontcolor=#333333", 330 | #] 331 | 332 | # PlantUML stylesheet 333 | plantumlfolder = ospj(confpyfolder, "sphinxcontrib-plantuml") 334 | plantumlstylesabspath = ospj(plantumlfolder, "typo3_styles.iuml") 335 | plantuml = ["plantuml", "-I" + plantumlstylesabspath] 336 | 337 | intersphinx_mapping = {} 338 | # 339 | panels_add_bootstrap_css = False 340 | # 341 | # 342 | # 343 | # 344 | # (3) Settings from MAKEDIR/Defaults.cfg 345 | merge_settings_file(defaultsabspath, US) 346 | # 347 | # 348 | # 349 | # 350 | # (4) User settings from ./Documentation/Settings.cfg 351 | merge_settings_file(settingsabspath, US) 352 | # 353 | # 354 | # 355 | # 356 | # (5) More hardcoded settings in this conf.py file 357 | # 358 | us_general = US["general"] = US.get("general", {}) 359 | if US.get("exclude_patterns") is None: 360 | US["exclude_patterns"] = {"anyname": "_make"} 361 | us_general["html_last_updated_fmt"] = "%b %d, %Y %H:%M" 362 | us_general["html_static_path"] = [] 363 | us_general["html_theme_path"] = ["_themes", sphinx_typo3_theme.get_html_theme_path()] 364 | us_general["templates_path"] = [] 365 | us_general["today_fmt"] = "%Y-%m-%d %H:%M" 366 | 367 | # 'published' means in the following context: Available under that name in the 368 | # GlobalContext of Jinja2 templating. Example: if 'show_copyright' is said to 369 | # be published it can be used in the Jinja2 template like: 370 | # {{ show_copyright }} 371 | 372 | us_html_theme_options = US["html_theme_options"] = US.get("html_theme_options", {}) 373 | 374 | # no, not rendering for the server by default 375 | us_html_theme_options["docstypo3org"] = False 376 | 377 | # 'html_show_copyright' is published as 'show_copyright' 378 | us_general["html_show_copyright"] = True 379 | 380 | # published as 'theme_show_copyright' 381 | us_html_theme_options["show_copyright"] = True 382 | 383 | # published as 'theme_show_last_updated 384 | us_html_theme_options["show_last_updated"] = True 385 | 386 | # published as 'theme_show_revision' 387 | us_html_theme_options["show_revision"] = True 388 | 389 | # published as 'show_source' 390 | us_general["html_show_sourcelink"] = True 391 | 392 | # published as 'theme_show_sourcelink' 393 | us_html_theme_options["show_sourcelink"] = True 394 | 395 | # published as 'show_sphinx' 396 | us_general["html_show_sphinx"] = True 397 | 398 | # published as 'theme_show_sphinx' 399 | us_html_theme_options["show_sphinx"] = True 400 | 401 | # published as 'use_opensearch' (set above already) 402 | # html_use_opensearch = html_use_opensearch 403 | # '' is published as 'theme_use_opensearch 404 | # no trailing slash! 405 | 406 | # DISABLED here for now 407 | if 1: 408 | us_html_theme_options["use_opensearch"] = False 409 | else: 410 | # old mess - to be fixed somewhen 411 | # ? html_use_opensearch = html_theme_options['use_opensearch'] 412 | if not "use_opensearch" in html_theme_options: 413 | html_theme_options["use_opensearch"] = "" 414 | elif type(html_theme_options["use_opensearch"]) in [type(""), type(u"")]: 415 | html_theme_options["use_opensearch"] = html_theme_options[ 416 | "use_opensearch" 417 | ].rstrip("/") 418 | # 419 | # 420 | # 421 | # 422 | # (6) Settings in MAKEDIR/Overrides.cfg 423 | merge_settings_file(overridesabspath, US) 424 | # 425 | # 426 | # 427 | # 428 | def updateModuleGlobals(GLOBALS, US): 429 | if "general" in US: 430 | GLOBALS.update(US["general"]) 431 | 432 | if "docstypo3" in US: 433 | GLOBALS["docstypo3"] = US["docstypo3"] 434 | # Provide 'description' in the module, if empty but specified in dt3m. 435 | # The value is used to set up other formats like epub, latex, man, ... 436 | description = US["docstypo3"].get("meta", {}).get("description", "") 437 | GLOBALS["description"] = GLOBALS.get("description", "") or description 438 | 439 | # allow comma separated values like: .rst,.md 440 | if type(GLOBALS["source_suffix"]) in [type(""), type(u"")]: 441 | GLOBALS["source_suffix"] = [ 442 | v.strip() for v in GLOBALS["source_suffix"].split(",") 443 | ] 444 | 445 | for k, v in sorted(US.get("exclude_patterns", {}).items()): 446 | if not v in GLOBALS["exclude_patterns"]: 447 | GLOBALS["exclude_patterns"].append(v) 448 | 449 | for k, e in US.get("extensions", {}).items(): 450 | if not e in GLOBALS["extensions"]: 451 | # DISABLED: check for legal_extensions 452 | if True or e in legal_extensions: 453 | GLOBALS["extensions"].append(e) 454 | 455 | for k, v in US.get("extlinks", {}).items(): 456 | # untested! but seems to work 457 | # we expect: 458 | # forge = https://forge.typo3.org/issues/%s | forge: 459 | GLOBALS["extlinks"][k] = (v.split("|")[0].strip(), v.split("|")[1].strip()) 460 | 461 | for k, v in US.get("intersphinx_mapping", {}).items(): 462 | GLOBALS["intersphinx_mapping"][k] = (v, None) 463 | 464 | for k, v in US.get("html_theme_options", {}).items(): 465 | GLOBALS["html_theme_options"][k] = v 466 | 467 | for k, v in US.get("graphviz_dot_args_as_dict", {}).items(): 468 | GLOBALS["graphviz_dot_args_as_dict"][k] = v 469 | 470 | # derive default settings for the other builders from the values we 471 | # already have 472 | LD = US.get("latex_documents", {}) 473 | GLOBALS["latex_documents"] = [ 474 | ( 475 | firstNotNone(LD.get("source_start_file"), GLOBALS["master_doc"]), 476 | firstNotNone(LD.get("target_name"), "PROJECT.tex"), 477 | firstNotNone(LD.get("title"), GLOBALS["project"]), 478 | firstNotNone(LD.get("author"), GLOBALS["t3author"]), 479 | firstNotNone(LD.get("documentclass"), "manual"), 480 | ) 481 | ] 482 | LE = US.get("latex_elements", {}) 483 | GLOBALS["latex_elements"] = { 484 | "papersize": firstNotNone(LE.get("papersize"), "a4paper"), 485 | "pointsize": firstNotNone(LE.get("pointsize"), "10pt"), 486 | "preamble": firstNotNone(LE.get("preamble"), "%%\\usepackage{typo3}"), 487 | # for more see: http://sphinx-doc.org/config.html#confval-latex_elements 488 | } 489 | MP = US.get("man_pages", {}) 490 | GLOBALS["man_pages"] = [ 491 | ( 492 | firstNotNone(MP.get("source_start_file"), GLOBALS["master_doc"]), 493 | firstNotNone(MP.get("name"), GLOBALS["project"]), 494 | firstNotNone(MP.get("description"), GLOBALS["description"]), 495 | [firstNotNone(MP.get("authors"), GLOBALS["t3author"])], 496 | firstNotNone(MP.get("manual_section"), 1), 497 | ) 498 | ] 499 | TD = US.get("texinfo_documents", {}) 500 | GLOBALS["texinfo_documents"] = [ 501 | ( 502 | firstNotNone(TD.get("source_start_file"), GLOBALS["master_doc"]), 503 | firstNotNone(TD.get("target_name"), GLOBALS["t3shortname"]), 504 | firstNotNone(TD.get("title"), GLOBALS["project"]), 505 | firstNotNone(TD.get("author"), GLOBALS["t3author"]), 506 | firstNotNone(TD.get("dir_menu_entry"), GLOBALS["project"]), 507 | firstNotNone(TD.get("description"), GLOBALS["description"]), 508 | firstNotNone(TD.get("category"), "Miscellaneous"), 509 | ) 510 | ] 511 | OTA = US.get("sphinx_object_types_to_add", {}) 512 | OTA_cleaned = {} 513 | for k in OTA.keys(): 514 | v = [vv.strip() for vv in OTA[k].split('//')] 515 | if len(v) == 3 and len(v[0]) and len(v[1]) and len(v[2]): 516 | OTA_cleaned[k] = v 517 | if OTA_cleaned: 518 | GLOBALS["sphinx_object_types_to_add"] = OTA_cleaned 519 | 520 | return 521 | 522 | 523 | # NOW! 524 | # This is where the magic happens! We update this module's globals() 525 | # with the user settings US. That has the same effect as if the 526 | # settings had been directly written to this conf.py 527 | 528 | updateModuleGlobals(G, US) 529 | 530 | 531 | # define if not existing 532 | 533 | if not "epub_author" in G: 534 | epub_author = t3author 535 | if not "epub_copyright" in G: 536 | epub_copyright = copyright 537 | if not "epub_publisher" in G: 538 | epub_publisher = t3author 539 | if not "epub_title" in G: 540 | epub_title = project 541 | 542 | if not "htmlhelp_basename" in G: 543 | htmlhelp_basename = t3shortname 544 | # 545 | # 546 | # 547 | # 548 | # (7) Settings from ../Makedir/Settings.json 549 | # This is the "conf_py" subpart of "jobfile.json" 550 | # 551 | # Now: Everything can be overriden. Use at you own risk! 552 | # 553 | if ospe(settingsjsonabspath): 554 | with codecs.open(settingsjsonabspath, "r", "utf-8") as f1: 555 | D = json.load(f1) 556 | # ATTENTION: 557 | # everything you have in the "general": {k:v} section of Settings.json 558 | # is treated as if you had written 'k = v' here in conf.py 559 | globals().update(D.get("general", {})) 560 | 561 | # extensions are now ADDED 562 | for e in D.get("extensions", []): 563 | if not e in extensions: 564 | extensions.append(e) 565 | 566 | extlinks.update(D.get("extlinks", {})) 567 | html_theme_options.update(D.get("html_theme_options", {})) 568 | intersphinx_mapping.update(D.get("intersphinx_mapping", {})) 569 | graphviz_dot_args_as_dict.update(D.get("graphviz_dot_args_as_dict", {})) 570 | 571 | # ATTENTION: 572 | # settings.json is totally in you hand. No sanity checks are made here. 573 | 574 | 575 | graphviz_dot_args = ["%s=%s" % (k, v) 576 | for k, v in sorted(graphviz_dot_args_as_dict.items()) 577 | if v != "None"] 578 | 579 | def prepare_edit_button(hto): 580 | repository = '' 581 | branch = '' 582 | removed = {} 583 | edit_button_type = hto['edit_button_type'] 584 | result = hto["repo_file_edit_url"] 585 | removed['edit_button_type_original'] = edit_button_type 586 | removed['repo_file_edit_url_original'] = result 587 | proceed = True 588 | if proceed: 589 | if result and edit_button_type in ['bitbucket', 'github', 'gitlab']: 590 | # We already have what we want. 591 | proceed = False 592 | if proceed: 593 | if edit_button_type not in ['auto', 'bitbucket', 'github', 'gitlab']: 594 | # The edit button is not to be shown. 595 | edit_button_type = 'none' 596 | result = '' 597 | proceed = False 598 | if proceed: 599 | repository = hto['repository_url'] 600 | if not repository and hto['github_repository']: 601 | repository = f"https://github.com/{hto['github_repository']}" 602 | branch = hto['repository_branch'] 603 | if not branch and hto['github_branch']: 604 | branch = hto['github_branch'] 605 | proceed = repository and branch 606 | if not (repository and branch): 607 | result = '' 608 | edit_button_type = 'none' 609 | proceed = False 610 | if proceed: 611 | if edit_button_type == 'auto': 612 | if '//github' in repository: 613 | edit_button_type = 'github' 614 | elif '//bitbucket' in repository: 615 | edit_button_type = 'bitbucket' 616 | elif '//gitlab' in repository: 617 | edit_button_type = 'gitlab' 618 | else: 619 | edit_button_type = 'gitlab' 620 | 621 | specific_url_part = { 622 | 'bitbucket': 'src', 623 | 'github': 'edit', 624 | 'gitlab': '-/edit', 625 | }[edit_button_type] 626 | 627 | result = '/'.join([ 628 | repository.rstrip('/'), 629 | specific_url_part, 630 | branch]) 631 | 632 | # So, here we have the two crucial values, stored as side effect 633 | # in the html_theme_options: 634 | hto["edit_button_type"] = edit_button_type 635 | hto["repo_file_edit_url"] = result 636 | 637 | # The other settings aren't "real" theme variables. So remove them, but 638 | # keep the original values for the records (dump file Settings.dump.json) 639 | for k in [ 640 | "github_branch", 641 | "github_repository", 642 | "repository_branch", 643 | "repository_url", 644 | ]: 645 | removed[k] = hto[k] 646 | del hto[k] 647 | 648 | return removed 649 | 650 | 651 | html_theme_options_intermediate = prepare_edit_button(html_theme_options) 652 | 653 | 654 | # As other modules of Sphinx may check the values of conf.py let's do 655 | # a bit of housekeeping und remove helper vars that aren't needed any more. 656 | # Later: As it turns out, this is not really necessary, as Sphinx only keeps 657 | # know config variables 658 | 659 | for k in [ 660 | "config", 661 | "contents", 662 | "D", 663 | "data", 664 | "e", 665 | "extensions_to_be_loaded", 666 | "f1", 667 | "f1name", 668 | "item", 669 | "legal_extensions", 670 | "o", 671 | "plantumlfolder", 672 | "plantumlstylesabspath", 673 | "read_method", 674 | "s", 675 | "section", 676 | "US", 677 | "us_general", 678 | "us_html_theme_options", 679 | "user_settings", 680 | "v", 681 | "WithSection", 682 | ]: 683 | if k in G: 684 | del G[k] 685 | del k 686 | 687 | def json_serializable(obj): 688 | try: 689 | json.dumps(obj) 690 | return True 691 | except TypeError: 692 | return False 693 | 694 | if 1 and "dump resulting settings as json": 695 | # This dump is important, as the Docker container refers to it to report 696 | # back what happened during the build. 697 | settingsDumpJsonFile = logdirabspath + "/Settings.dump.json" 698 | with codecs.open(settingsDumpJsonFile, "w", "utf-8") as f2: 699 | json.dump( 700 | {k: v for k, v in list(globals().items()) if k not in ["G"] and json_serializable(v)}, 701 | f2, indent=4, sort_keys=True) 702 | del settingsDumpJsonFile 703 | 704 | if 1 and "dump resulting settings as toml": 705 | settingsDumpTomlFile = logdirabspath + "/Settings.dump.toml" 706 | with codecs.open(settingsDumpTomlFile, "w", "utf-8") as f2: 707 | toml.dump( 708 | {k: v for k, v in list(globals().items()) if k not in ["G"] and json_serializable(v)}, 709 | f2) 710 | del settingsDumpTomlFile 711 | 712 | 713 | def setup(app): 714 | 715 | for k, v in sphinx_object_types_to_add.items(): 716 | directive, textrole, objname = v 717 | indextemplate = "pair: %s; " + objname 718 | app.add_object_type(directive, textrole, objname=objname, indextemplate=indextemplate) 719 | 720 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/docutils.conf: -------------------------------------------------------------------------------- 1 | # 2 | # https://docutils.sourceforge.io/docs/user/config.html 3 | # true, yes, 1 // false, no, 0, empty 4 | # 5 | # BUT, it seems, some need to be empty to count as False!? 6 | 7 | [general] 8 | 9 | debug= 10 | dump_internals= 11 | dump_pseudo_xml= 12 | dump_settings= 13 | dump_transforms= 14 | strip_classes = container 15 | 16 | 17 | [parsers] 18 | 19 | raw-enabled= 20 | smart-quotes= 21 | pep-references= 22 | rfc-references= 23 | 24 | 25 | [writers] 26 | source_link=1 27 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/docutils_unsafe.conf: -------------------------------------------------------------------------------- 1 | # THE TOOLCHAIN uses this content if `allow_unsafe` is True 2 | # 3 | # https://docutils.sourceforge.io/docs/user/config.html 4 | # true, yes, 1 // false, no, 0, empty 5 | # 6 | # BUT, it seems, some need to be empty to count as False!? 7 | 8 | [general] 9 | 10 | debug= 11 | dump_internals= 12 | dump_pseudo_xml= 13 | dump_settings= 14 | dump_transforms= 15 | strip_classes = container 16 | 17 | 18 | [parsers] 19 | 20 | raw-enabled=1 21 | smart-quotes= 22 | pep-references= 23 | rfc-references= 24 | 25 | 26 | [writers] 27 | source_link=1 28 | -------------------------------------------------------------------------------- /ALL-for-build/Makedir/sphinxcontrib-plantuml/typo3_styles.iuml: -------------------------------------------------------------------------------- 1 | ' 2 | ' TYPO3 PlantUML Stylesheet 3 | ' 4 | ' Parameters: 5 | ' Get all available style parameters at the command line of this Docker container: 6 | ' # source <(docker run --rm t3docs/render-documentation show-shell-commands) 7 | ' # dockrun_t3rd /bin/bash 8 | ' # plantuml -language 9 | ' => search for "skinparameter" 10 | ' 11 | ' Icons: 12 | ' Preprocessor directives like !include, !define, etc. are not supported in this global stylesheet when rendered by 13 | ' PlantUML v2017.15 - which is used in the current TYPO3 documentation rendering process - such that 14 | ' custom macros and sprites cannot be provided globally. In newer versions of PlantUML, icons can be 15 | ' provided globally by 16 | ' - including custom sprites and macros in this file 17 | ' - using the globally available PlantUML Standard Library 18 | ' 19 | ' @see https://forum.plantuml.net/6718/cannot-recognize-included-file-in-config-file 20 | ' @see https://github.com/tupadr3/plantuml-icon-font-sprites#getting-started 21 | ' @see https://plantuml.com/stdlib 22 | ' 23 | skinparam ArrowColor #f49700 24 | skinparam BackgroundColor #FFFFFF 25 | skinparam DefaultFontColor #333333 26 | skinparam DividerBackgroundColor #f7a831 27 | skinparam GroupBackgroundColor #f7a831 28 | skinparam LifeLineBackgroundColor white 29 | skinparam LifeLineBorderColor #e18d00 30 | skinparam ParticipantBackgroundColor #f7a831 31 | skinparam ParticipantBorderColor #e18d00 32 | skinparam BoxLineColor #e18d00 33 | skinparam BoxBackgroundColor #DDDDDD 34 | skinparam Padding 8 35 | skinparam Shadowing false 36 | -------------------------------------------------------------------------------- /ALL-for-build/Menu/mainmenu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source "$HOME/.bashrc" 4 | source /ALL/Downloads/envvars.sh 5 | 6 | # provide defaults 7 | export OUR_IMAGE=${OUR_IMAGE:-t3docs/render-documentation} 8 | export OUR_IMAGE_SHORT=${OUR_IMAGE_SHORT:-t3rd} 9 | export OUR_IMAGE_SLOGAN=${OUR_IMAGE_SLOGAN:-dockrun_t3rd - TYPO3-render-documentation} 10 | 11 | export mmLOGFILE=/RESULT/within-container-command-history.log.txt 12 | 13 | function install-wheels(){ 14 | find /WHEELS -type f -name "*.whl" | xargs --no-run-if-empty pip --disable-pip-version-check install --force --no-cache-dir 15 | find /WHEELS/ -name "*.whl" -exec pip freeze \; -quit 16 | } 17 | 18 | function utcstamp(){ 19 | printf '%s' $(date -u +"%Y-%m-%dT%H:%M:%S%z") 20 | } 21 | 22 | function mm-bashcmd() { 23 | local cmd 24 | shift 25 | cmd="/bin/bash -c" 26 | if [ -z "$@" ]; then false 27 | else 28 | cmd="$cmd"$(printf ' %q' "$@") 29 | fi 30 | echo $(utcstamp) "${cmd}" >>"$mmLOGFILE" 31 | eval "${cmd}" 32 | local exitstatus="$?" 33 | tell-about-results "$exitstatus" 34 | } 35 | 36 | 37 | function mm-minimalhelp(){ 38 | cat </RESULT/warning-files.txt 169 | echo Find the results: 170 | find /RESULT/Result -type f -regextype posix-egrep -iregex '.*/0\.0\.0/Index\.html$' -printf " ./Documentation-GENERATED-temp/Result/%P\\n" 171 | find /RESULT/Result -type f -regextype posix-egrep -iregex '.*/0\.0\.0/singlehtml/Index\.html$' -printf " ./Documentation-GENERATED-temp/Result/%P\\n" 172 | find /RESULT/Result -type d -regextype posix-egrep -regex '.*/0\.0\.0/_buildinfo$' -printf " ./Documentation-GENERATED-temp/Result/%P\\n" 173 | find /RESULT/Result -type f -regextype posix-egrep -regex '.*/_buildinfo/warnings\.txt$' \! -empty -printf " ./Documentation-GENERATED-temp/Result/%P\\n" 174 | find /RESULT/Result -type f -regextype posix-egrep -regex '.*/_buildinfo/warnings\.txt$' \! -empty -printf " ./Documentation-GENERATED-temp/Result/%P\\n" >>/RESULT/warning-files.txt 175 | find /RESULT/Result -type f -regextype posix-egrep -iregex '.*/latex.*/run-make\.sh$' -printf " ./Documentation-GENERATED-temp/Result/%P\\n" 176 | find /RESULT/Result -type f -regextype posix-egrep -iregex '.*/package/package.*\.zip$' -printf " ./Documentation-GENERATED-temp/Result/%P\\n" 177 | 178 | if [ -f /RESULT/warning-files.txt ];then 179 | echo 180 | if [ -s /RESULT/warning-files.txt ];then 181 | echo "ATTENTION:" 182 | echo " There are Sphinx warnings!" 183 | else 184 | echo "Congratulations:" 185 | echo " There are no Sphinx warnings!" 186 | rm -f /RESULT/warning-files.txt 187 | fi 188 | echo 189 | fi 190 | fi 191 | } 192 | 193 | 194 | function mm-makeall() { 195 | local cmd 196 | shift 197 | install-wheels 198 | 199 | # make sure nothing is left over from previous run 200 | if [[ -f /tmp/RenderDocumentation/Todo/ALL.source-me.sh ]] 201 | then 202 | rm -f /tmp/RenderDocumentation/Todo/ALL.source-me.sh 203 | fi 204 | cmd="tct --cfg-file=/ALL/venv/tctconfig.cfg --verbose" 205 | cmd="$cmd run RenderDocumentation -c makedir /ALL/Makedir" 206 | cmd="$cmd -c make_latex 1 -c make_package 1 -c make_pdf 1 -c make_singlehtml 1" 207 | if [ -z "$@" ]; then false 208 | else 209 | cmd="$cmd"$(printf ' %q' "$@") 210 | fi 211 | 212 | echo $(utcstamp) cmd: "${cmd}" >>"$mmLOGFILE" 213 | eval "$cmd" 214 | 215 | local exitstatus=$? 216 | 217 | # do localizations 218 | if [[ -f /tmp/RenderDocumentation/Todo/ALL.source-me.sh ]] 219 | then 220 | source /tmp/RenderDocumentation/Todo/ALL.source-me.sh 221 | fi 222 | 223 | 224 | tell-about-results $exitstatus 225 | } 226 | 227 | 228 | function mm-makeall-no-cache() { 229 | if [ -d "/RESULT/Cache" ]; then 230 | rm -rf /RESULT/Cache 231 | fi 232 | mm-makeall "$@" 233 | } 234 | 235 | 236 | function mm-makehtml() { 237 | local cmd 238 | shift 239 | install-wheels 240 | 241 | # make sure nothing is left over from previous run 242 | if [[ -f /tmp/RenderDocumentation/Todo/ALL.source-me.sh ]] 243 | then 244 | rm -f /tmp/RenderDocumentation/Todo/ALL.source-me.sh 245 | fi 246 | cmd="tct --cfg-file=/ALL/venv/tctconfig.cfg --verbose" 247 | cmd="$cmd run RenderDocumentation -c makedir /ALL/Makedir" 248 | if [[ -z "$@" ]] 249 | then 250 | true "do nothing" 251 | else 252 | cmd="$cmd"$(printf ' %q' "$@") 253 | fi 254 | 255 | echo $(utcstamp) cmd: "${cmd}" >>"$mmLOGFILE" 256 | eval $cmd 257 | 258 | local exitstatus=$? 259 | 260 | # do localizations 261 | if [[ -f /tmp/RenderDocumentation/Todo/ALL.source-me.sh ]] 262 | then 263 | source /tmp/RenderDocumentation/Todo/ALL.source-me.sh 264 | fi 265 | 266 | tell-about-results $exitstatus 267 | } 268 | 269 | 270 | function mm-makehtml-no-cache() { 271 | if [ -d "/RESULT/Cache" ]; then 272 | rm -rf /RESULT/Cache 273 | fi 274 | mm-makehtml "$@" 275 | } 276 | 277 | 278 | case "$1" in 279 | --help) mm-usage "$@" ;; 280 | --version) mm-version "$@" ;; 281 | bashcmd) mm-bashcmd "$@" ;; 282 | makeall) mm-makeall "$@" ;; 283 | makeall-no-cache) mm-makeall-no-cache "$@" ;; 284 | makehtml) mm-makehtml "$@" ;; 285 | makehtml-no-cache) mm-makehtml-no-cache "$@" ;; 286 | show-shell-commands) mm-show-shell-commands "$@" ;; 287 | show-windows-bat) mm-show-windows-bat "$@" ;; 288 | show-faq) mm-show-faq "$@" ;; 289 | show-howto) mm-show-howto "$@" ;; 290 | tct) mm-tct "$@" ;; 291 | serve4build) mm-serve4build "$@" ;; 292 | just1sphinxbuild) mm-just1sphinxbuild "$@" ;; 293 | *) mm-minimalhelp "$@" ;; 294 | esac 295 | -------------------------------------------------------------------------------- /ALL-for-build/Menu/show-faq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source "$HOME/.bashrc" 4 | source /ALL/Downloads/envvars.sh 5 | 6 | # provide default 7 | OUR_IMAGE=${OUR_IMAGE:-t3docs/renderdocumentation} 8 | OUR_IMAGE_SHORT=${OUR_IMAGE_SHORT:-t3rd} 9 | OUR_IMAGE_SLOGAN=${OUR_IMAGE_SLOGAN:-t3rd_TYPO3_render_documentation} 10 | 11 | cat <" | awk '{print \$3}') 63 | 64 | Q: How can I remove unused data volumes? 65 | A: # list volumes 66 | docker volume ls 67 | docker volume ls --filter dangling=true 68 | 69 | # remove all unused 70 | docker volume prune 71 | 72 | 73 | End of document. 74 | 75 | ATTENTION: 76 | 77 | Currently this file is not up to date. 78 | Better see 79 | https://docs.typo3.org/m/typo3/t3docs-docker-render-documentation/draft/en-us/ 80 | 81 | 82 | EOT -------------------------------------------------------------------------------- /ALL-for-build/Menu/show-howto.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source "$HOME/.bashrc" 4 | source /ALL/Downloads/envvars.sh 5 | 6 | # provide default 7 | OUR_IMAGE=${OUR_IMAGE:-t3docs/render-documentation} 8 | OUR_IMAGE_SHORT=${OUR_IMAGE_SHORT:-t3rd} 9 | 10 | cat </dev/null 84 | docker run --rm \\ 85 | -v "\$PWD":/PROJECT/:ro \\ 86 | -v "\$PWD"/Documentation-GENERATED-temp/:/RESULT/ \\ 87 | --user=\$(id -u):\$(id -g) \\ 88 | $OUR_IMAGE makehtml 89 | 90 | 91 | Create handy shortcuts for the commandline: 92 | 93 | In several steps: 94 | 95 | docker run --rm ${OUR_IMAGE} show-shell-commands > temp 96 | source temp 97 | rm temp 98 | 99 | In just one step: 100 | 101 | # attention: no blanks between '<(' 102 | source <(docker run --rm ${OUR_IMAGE} show-shell-commands) 103 | 104 | Now THIS terminal window has a new command (=function) on the commandline: 105 | 106 | dockrun_${OUR_IMAGE_SHORT} 107 | dockrun_${OUR_IMAGE_SHORT} --help 108 | ... 109 | 110 | Use the new command to render the documentation: 111 | 112 | cd PROJECT 113 | dockrun_${OUR_IMAGE_SHORT} makehtml 114 | 115 | Use the new command in general: 116 | 117 | dockrun_$OUR_IMAGE_SHORT 118 | dockrun_$OUR_IMAGE_SHORT --help 119 | dockrun_$OUR_IMAGE_SHORT show-faq 120 | dockrun_$OUR_IMAGE_SHORT show-howto 121 | dockrun_$OUR_IMAGE_SHORT tct --help 122 | ... 123 | 124 | 125 | 126 | Developers 127 | ========== 128 | 129 | Fetch a suitable project that has a read-write folder structure /ALL: 130 | 131 | git clone https://github.com/t3docs/docker-render-documentation \\ 132 | t3docs/docker-render-documentation 133 | 134 | # go to the project 135 | cd t3docs/docker-render-documentation 136 | 137 | 138 | Required and possible volume mappings: 139 | 140 | Host Container :ro Type Comment 141 | ========= ============= === ========= ======= 142 | PROJECT/ /PROJECT/:ro yes required Read only. The project that has documentation/ 143 | 1) /RESULT/ no required Read-write output folder for the result. 144 | 2) /ALL/ no optional For development 145 | tmp/ /tmp/ no optional To find out about the created tmp data. 146 | 147 | 1) = PROJECT/Documentation-GENERATED-temp/ 148 | 2) = ALL-for-RW-mount (provide files yourself) 149 | 150 | 151 | =================== 152 | ATTENTION & WARNING 153 | =================== 154 | Be sure to map the correct folder to /RESULT/. 155 | It's content will totally be overwritten! 156 | Don't accidentally mount all your harddrive. 157 | 158 | 159 | Fetch the docker image (= our executable): 160 | 161 | docker pull t3docs/render-documentation 162 | 163 | 164 | ================================================== 165 | Finally 166 | -------------------------------------------------- 167 | 168 | Have fun! 169 | 170 | 171 | ATTENTION: 172 | 173 | Currently this file is not up to date. 174 | Better see 175 | https://docs.typo3.org/m/typo3/t3docs-docker-render-documentation/draft/en-us/ 176 | 177 | 178 | EOT 179 | -------------------------------------------------------------------------------- /ALL-for-build/Menu/show-shell-commands.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source "$HOME/.bashrc" 4 | source /ALL/Downloads/envvars.sh 5 | 6 | # provide defaults 7 | #1 8 | VERSION=${VERSION:-"v0.0.0"} 9 | DOCKRUN_PREFIX=${DOCKRUN_PREFIX:-"dockrun_"} 10 | OUR_IMAGE_SHORT=${OUR_IMAGE_SHORT:-t3rd} 11 | OUR_IMAGE_SLOGAN=${OUR_IMAGE_SLOGAN:-"t3rd - TYPO3 render documentation"} 12 | #2 13 | OUR_IMAGE_TAG=${OUR_IMAGE_TAG:-"$VERSION"} 14 | #3 15 | OUR_IMAGE=${OUR_IMAGE:-"t3docs/render-documentation:$OUR_IMAGE_TAG"} 16 | 17 | cat <shell-commands.sh 30 | # source shell-commands.sh 31 | 32 | # This function defines the helper function, usually named \'dockrun_t3rd\' 33 | function ${DOCKRUN_PREFIX}${OUR_IMAGE_SHORT} () { 34 | 35 | # Environment variables the USER may find important (on the host!), 36 | # no slash ('/') at the end, 37 | # default is the current directory \$(pwd): 38 | # 39 | # T3DOCS_PROJECT=/abspathto/MyProjectStartFolder (readonly) 40 | # T3DOCS_RESULT=/abspathto/ResultFolder (readwrite) 41 | # T3DOCS_TMP=/abspathto/TemporaryFolder (readwrite) 42 | # T3DOCS_THEMES=/abspathto/MySphinxThemes (readonly) 43 | # 44 | # Environment variables only some DEVELOPERS may find important, 45 | # no slash ('/') at the end, 46 | # 47 | # T3DOCS_MAKEDIR=/abspathto/MYALL/Makedir 48 | # T3DOCS_MENU=/abspathto/MYALL/Menu 49 | # T3DOCS_TOOLCHAINS=/abspathto/MYALL/Toolchains 50 | # T3DOCS_USERHOME=/abspathto/MYALL/userhome 51 | # T3DOCS_VENV=/abspathto/MYALL/venv 52 | # T3DOCS_WHEELS=/abspathto/WheelsFolder 53 | # T3DOCS_DEBUG=0 (0 or 1, talk to stdout) 54 | # T3DOCS_DRY_RUN=0 (0 or 1, don't really execute) 55 | # T3DOCS_GIT_RESTORE_MTIME=1 (0 or 1, usually 1=on) 56 | 57 | local DEBUG=\${T3DOCS_DEBUG:-0} 58 | local GIT_RESTORE_MTIME=${T3DOCS_GIT_RESTORE_MTIME:-1} 59 | local DRY_RUN=\${T3DOCS_DRY_RUN:-0} 60 | local git_restore_mtime=\$(which git-restore-mtime) 61 | local exitcode=\$? 62 | if [[ \$exitcode -ne 0 ]] || [[ "\$GIT_RESTORE_MTIME" = "0" ]]; then git_restore_mtime=; fi 63 | 64 | # start command building 65 | local cmd="docker run --rm" 66 | if [[ \$# -eq 0 ]]; then 67 | # create folders on host? (e.g. Documentation-GENERATED-temp) 68 | local CREATING=1 69 | cmd="\$cmd --user=\$(id -u):\$(id -g)" 70 | elif [[ "\$@" = "/bin/bash" ]]; then 71 | local CREATING=1 72 | cmd="\$cmd --entrypoint /bin/bash -it" 73 | elif [[ "\$@" = "/usr/bin/bash" ]]; then 74 | local CREATING=1 75 | cmd="\$cmd --user=\$(id -u):\$(id -g)" 76 | cmd="\$cmd --entrypoint /bin/bash -it" 77 | elif [[ "\$1" = "serve4build" ]]; then 78 | local CREATING=1 79 | local PORT=\${2:-9999} 80 | cmd="\$cmd --user=\$(id -u):\$(id -g) -it" 81 | cmd="\$cmd --publish=\${PORT}:\${PORT}/tcp" 82 | elif [[ "\$1" = "just1sphinxbuild" ]]; then 83 | local CREATING=1 84 | cmd="\$cmd --user=\$(id -u):\$(id -g)" 85 | elif [[ "\$@" = "export-ALL" ]]; then 86 | local CREATING=1 87 | cmd="\$cmd --entrypoint /bin/bash" 88 | else 89 | local CREATING=1 90 | cmd="\$cmd --user=\$(id -u):\$(id -g)" 91 | fi 92 | 93 | # PROJECT - read only! 94 | # assume existing folder PROJECT/Documentation 95 | # absolute path to existing folder PROJECT or current dir 96 | local PROJECT=\${T3DOCS_PROJECT:-\$(pwd)} 97 | cmd="\$cmd -v \$PROJECT:/PROJECT:ro" 98 | if ((\$DEBUG)); then echo "PROJECT......: \$PROJECT"; fi 99 | 100 | # RESULT 101 | # absolute path to existing folder RESULT of (RESULT/Documentation-GENERATED-temp) 102 | local RESULT=\${T3DOCS_RESULT:-\$(pwd)} 103 | # force special name to prevent create/delete disasters 104 | RESULT=\${RESULT}/Documentation-GENERATED-temp 105 | cmd="\$cmd -v \$RESULT:/RESULT" 106 | if ((\$CREATING)); then 107 | if ((\$DEBUG)); then echo creating.....: mkdir -p "\$RESULT" ; fi 108 | mkdir -p "\$RESULT" 2>/dev/null 109 | fi 110 | if ((\$DEBUG)); then echo "git_restore_mtime: \$git_restore_mtime"; fi 111 | if ((\$DEBUG)); then echo "RESULT.......: \$RESULT"; fi 112 | # TMP 113 | # absolute path to existing folder TMP of (TMP/tmp-GENERATED-temp) 114 | local TMP=\${T3DOCS_TMP:-\$(pwd)} 115 | # force special name to prevent create/delete disasters 116 | TMP=\${TMP}/tmp-GENERATED-temp 117 | if ((\$CREATING)) && [[ -n "\${T3DOCS_TMP}" ]]; then 118 | mkdir -p "\$TMP" 2>/dev/null 119 | fi 120 | if [[ -d "\${TMP}" ]]; then 121 | cmd="\$cmd -v \$TMP:/tmp" 122 | if ((\$CREATING)); then 123 | /bin/bash -c "rm -rf \$TMP/*" 124 | fi 125 | if ((\$DEBUG)); then echo "TMP..........: \$TMP"; fi 126 | fi 127 | 128 | # USERHOME 129 | # absolute path to existing folder 'userhome' 130 | local USERHOME=\${T3DOCS_USERHOME:-\$(pwd)/tmp-GENERATED-userhome} 131 | if [ -d "\$USERHOME" ]; then 132 | cmd="\$cmd -v \$USERHOME:/ALL/userhome" 133 | if ((\$DEBUG)); then echo "USERHOME......: \$USERHOME"; fi 134 | fi 135 | 136 | # MAKEDIR 137 | # absolute path to existing folder MAKEDIR 138 | local MAKEDIR=\${T3DOCS_MAKEDIR:-\$(pwd)/tmp-GENERATED-Makedir} 139 | if [ -d "\$MAKEDIR" ]; then 140 | cmd="\$cmd -v \$MAKEDIR:/ALL/Makedir" 141 | if ((\$DEBUG)); then echo "MAKEDIR......: \$MAKEDIR"; fi 142 | fi 143 | 144 | # MENU 145 | # absolute path to existing folder MENU 146 | local MENU=\${T3DOCS_MENU:-\$(pwd)/tmp-GENERATED-Menu} 147 | if [ -d "\$MENU" ]; then 148 | cmd="\$cmd -v \$MENU:/ALL/Menu" 149 | if ((\$DEBUG)); then echo "MENU.........: \$MENU"; fi 150 | fi 151 | 152 | # VENV (used to be 'Rundir') 153 | # absolute path to existing folder VENV 154 | local VENV=\${T3DOCS_VENV:-\$(pwd)/tmp-GENERATED-venv} 155 | if [ -d "\$VENV" ]; then 156 | cmd="\$cmd -v \$VENV:/ALL/venv" 157 | if ((\$DEBUG)); then echo "VENV.........: \$VENV"; fi 158 | fi 159 | 160 | # THEMES 161 | # absolute path to a folder containing Sphinx themes 162 | local THEMES=\${T3DOCS_THEMES:-\$(pwd)/tmp-GENERATED-Themes} 163 | if [ -d "\$THEMES" ]; then 164 | cmd="\$cmd -v \$THEMES:/THEMES" 165 | if ((\$DEBUG)); then echo "THEMES.......: \$THEMES"; fi 166 | fi 167 | 168 | # TOOLCHAINS 169 | # absolute path to existing folder TOOLCHAINS 170 | local TOOLCHAINS=\${T3DOCS_TOOLCHAINS:-\$(pwd)/tmp-GENERATED-Toolchains} 171 | if [ -d "\$TOOLCHAINS" ]; then 172 | cmd="\$cmd -v \$TOOLCHAINS:/ALL/Toolchains" 173 | if ((\$DEBUG)); then echo "TOOLCHAINS...: \$TOOLCHAINS"; fi 174 | fi 175 | 176 | # WHEELS 177 | # absolute path to a folder containing Python wheel packages 178 | local WHEELS=\${T3DOCS_WHEELS:-\$(pwd)/tmp-GENERATED-Wheels} 179 | if [ -d "\$WHEELS" ]; then 180 | cmd="\$cmd -v \$WHEELS:/WHEELS" 181 | if ((\$DEBUG)); then echo "WHEELS.......: \$WHEELS"; fi 182 | fi 183 | 184 | cmd="\$cmd $OUR_IMAGE" 185 | if ((\$DEBUG)); then echo "OUR_IMAGE....: $OUR_IMAGE"; fi 186 | 187 | # add remaining arguments 188 | if [[ "\$@" = "/bin/bash" ]]; then 189 | true "do nothing here" 190 | elif [[ "\$@" = "/usr/bin/bash" ]]; then 191 | true "do nothing here" 192 | elif [[ "\$1" = "serve4build" ]]; then 193 | cmd="\$cmd \${1} \${PORT}" 194 | elif [[ "\$1" = "just1sphinxbuild" ]]; then 195 | cmd="\$cmd \$@" 196 | echo "See 'Documentation-GENERATED-temp/sphinx-build' for build information" 197 | elif [[ "\$@" = "export-ALL" ]]; then 198 | cmd="\$cmd -c \"rsync -a --delete --chown=\$(id -u):\$(id -g) /ALL/ /RESULT/ALL-exported\"" 199 | echo The export will go to: 200 | echo " \$RESULT/ALL-exported" 201 | 202 | else 203 | cmd="\$cmd \$@" 204 | # if script git-restore-mtime exists and '*make*' in args try the command 205 | # See README: get 'git-restore-mtime' from https://github.com/MestreLion/git-tools 206 | if [[ "\$git_restore_mtime" != "" ]] && [[ \$@ =~ .*make.* ]]; then 207 | if ((\$DEBUG)); then 208 | echo \$git_restore_mtime 209 | \$git_restore_mtime 210 | else 211 | \$git_restore_mtime 2>/dev/null 212 | fi 213 | fi 214 | fi 215 | if [[ -w "\$RESULT" ]]; then true 216 | echo "\$cmd" | sed "s/-v /\\\\\\\\\\\\n -v /g" >"\$RESULT/last-docker-run-command-GENERATED.sh.txt" 217 | fi 218 | if ((\$DEBUG || \$DRY_RUN)); then 219 | echo \$cmd | sed "s/-v /\\\\\\\\\\\\n -v /g" 220 | fi 221 | if [[ "\$DRY_RUN" = "0" ]]; then 222 | eval "\$cmd" 223 | fi 224 | } 225 | 226 | if [[ ! -v DOCKRUN_FN_QUIET ]]; then true 227 | DOCKRUN_FN_QUIET=0 228 | fi 229 | if [[ "\$DOCKRUN_FN_QUIET" -ne 1 ]]; then true 230 | echo "This function is now defined FOR THIS terminal window to run '${OUR_IMAGE_TAG}':" 231 | echo " ${DOCKRUN_PREFIX}${OUR_IMAGE_SHORT}" 232 | echo "" 233 | echo "(Define 'export DOCKRUN_FN_QUIET=1' to turn this message off)" 234 | fi 235 | 236 | EOT 237 | -------------------------------------------------------------------------------- /ALL-for-build/Menu/show-windows-bat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source "$HOME/.bashrc" 4 | source /ALL/Downloads/envvars.sh 5 | 6 | # show line endings as CRLF 7 | cat /ALL/Downloads/dockrun_t3rd.bat | sed -e 's/$/\r/' 8 | -------------------------------------------------------------------------------- /ALL-for-build/Scripts/just1sphinxbuild.py: -------------------------------------------------------------------------------- 1 | # /usr/bin/env python2 2 | # coding: utf-8 3 | 4 | from __future__ import print_function 5 | 6 | import os 7 | import shlex 8 | import sys 9 | from os.path import exists as ospe, join as ospj 10 | from subprocess import call 11 | 12 | cmd_fname = 'cmd.txt' 13 | cwd = os.getcwd() 14 | stderr_fname = 'stderr.bytes.txt' 15 | stdout_fname = 'stdout.bytes.txt' 16 | warnings_fname = 'warnings.txt' 17 | logdir = '/RESULT/sphinx-build' 18 | 19 | cmd_fpath = ospj(logdir, cmd_fname) 20 | stdout_fpath = ospj(logdir, stdout_fname) 21 | stderr_fpath = ospj(logdir, stderr_fname) 22 | warnings_fpath = ospj(logdir, warnings_fname) 23 | 24 | makehtml_cmd = ( 25 | ' /ALL/venv/.venv/bin/sphinx-build' 26 | ' -v -v -v -b html' 27 | ' -c /ALL/Makedir' 28 | ' -j auto' 29 | ' -T -q ' 30 | ' -w /RESULT/sphinx-build/warnings.txt' 31 | ' -d /RESULT/Cache' 32 | ' /PROJECT/Documentation' 33 | ' /RESULT/Result/project/0.0.0/' 34 | ).strip() 35 | 36 | dirs_to_create = [ 37 | '/RESULT', 38 | '/RESULT/Cache', 39 | '/RESULT/Result/project/0.0.0', 40 | logdir, 41 | ] 42 | 43 | 44 | def makehtml(): 45 | for adir in dirs_to_create: 46 | if not ospe(adir): 47 | os.makedirs(adir) 48 | cmdlist = shlex.split(makehtml_cmd) 49 | with open(cmd_fpath, 'w') as f2: 50 | f2.write(' \\\n'.join(cmdlist)) 51 | f2.write('\n') 52 | with open(stdout_fpath, 'wb') as fd_stdout, open(stderr_fpath, 'wb') as fd_stderr: 53 | exitcode = call(cmdlist, stdout=fd_stdout, stderr=fd_stderr, shell=False, cwd=cwd) 54 | return exitcode 55 | 56 | 57 | if __name__ == '__main__': 58 | exitcode = makehtml() 59 | sys.exit(exitcode) 60 | -------------------------------------------------------------------------------- /ALL-for-build/Scripts/serve4build.py: -------------------------------------------------------------------------------- 1 | # /usr/bin/env python2 2 | # coding: utf-8 3 | 4 | from __future__ import print_function 5 | 6 | import codecs 7 | import os 8 | import shlex 9 | import sys 10 | import threading 11 | import time 12 | import urlparse 13 | from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer 14 | from SocketServer import ThreadingMixIn 15 | from os.path import exists as ospe, join as ospj 16 | from subprocess import call 17 | 18 | GD = global_data = dict(xeq_name_cnt=0, request_counter=0) 19 | cmd_fname = 'cmd.txt' 20 | cwd = os.getcwd() 21 | stderr_fname = 'stderr.bytes.txt' 22 | stdout_fname = 'stdout.bytes.txt' 23 | warnings_fname = 'warnings.txt' 24 | logdir = '/RESULT/sphinx-build' 25 | 26 | cmd_fpath = ospj(logdir, cmd_fname) 27 | stdout_fpath = ospj(logdir, stdout_fname) 28 | stderr_fpath = ospj(logdir, stderr_fname) 29 | warnings_fpath = ospj(logdir, warnings_fname) 30 | 31 | makehtml_cmd = ( 32 | ' /ALL/venv/.venv/bin/sphinx-build' 33 | ' -v -v -v -b html' 34 | ' -c /ALL/Makedir' 35 | ' -j auto' 36 | ' -T -q ' 37 | ' -w /RESULT/sphinx-build/warnings.txt' 38 | ' -d /RESULT/Cache' 39 | ' /PROJECT/Documentation' 40 | ' /RESULT/Result/project/0.0.0/' 41 | ).strip() 42 | 43 | files_to_empty_at_start = [cmd_fpath, stderr_fpath, stdout_fpath] 44 | dirs_to_create = ['/RESULT', '/RESULT/Cache', logdir, '/RESULT/Result/project/0.0.0'] 45 | 46 | 47 | def _quote_html(html): 48 | return html.replace("&", "&").replace("<", "<").replace(">", ">") 49 | 50 | 51 | def prelines_of_file(fpath): 52 | prelines = [] 53 | atext = "Showing file: '%s'" % fpath 54 | if ospe(fpath): 55 | prelines.append(_quote_html(atext + ' - and yes, it does exist.')) 56 | prelines.append('') 57 | prelines.append(_quote_html('==========================================')) 58 | prelines.append(_quote_html(fpath.split('/')[-1])) 59 | prelines.append(_quote_html('=============== File START ===============')) 60 | with codecs.open(fpath, 'r', 'utf-8', 'replace') as f1: 61 | for aline in f1: 62 | prelines.append(_quote_html(aline.rstrip())) 63 | prelines.append(_quote_html('=============== File E N D ===============')) 64 | else: 65 | prelines.append(_quote_html(atext + ' - but no, it does not exist.')) 66 | return prelines 67 | 68 | 69 | def makehtml(): 70 | for adir in dirs_to_create: 71 | if not ospe(adir): 72 | os.makedirs(adir) 73 | cmdlist = shlex.split(makehtml_cmd) 74 | with open(cmd_fpath, 'w') as f2: 75 | f2.write(' \\\n'.join(cmdlist)) 76 | f2.write('\n') 77 | with open(stdout_fpath, 'wb') as fd_stdout, open(stderr_fpath, 'wb') as fd_stderr: 78 | exitcode = call(cmdlist, stdout=fd_stdout, stderr=fd_stderr, shell=False, cwd=cwd) 79 | return exitcode 80 | 81 | 82 | class GetHandler(BaseHTTPRequestHandler): 83 | 84 | def do_GET(self): 85 | GD['request_counter'] += 1 86 | msglines = [] 87 | prelines = [] 88 | msglines.append('request: %s' % GD['request_counter']) 89 | parsed_path = urlparse.urlparse(self.path) 90 | msglines.append('%s' % parsed_path.path) 91 | http_response_code = 200 92 | if parsed_path.path == '/makehtml_no_cache': 93 | exitcode = call(shlex.split('rm -rf /RESULT/Result /RESULT/Cache ' + logdir)) 94 | if exitcode: 95 | http_response_code = 503 96 | server.shutdown() 97 | sys.exit(1) 98 | atime = time.time() 99 | exitcode = makehtml() 100 | btime = time.time() 101 | duration = '%3.3f' % round(btime - atime, 3) 102 | if exitcode: 103 | # Service Unavailable 104 | http_response_code = 503 105 | msglines.append('%s, %s, exitcode: %s, took: %s seconds' % 106 | (http_response_code, 'failed', exitcode, duration)) 107 | else: 108 | msglines.append('%s, %s, exitcode: %s, took: %s seconds' % 109 | (http_response_code, 'succeeded', exitcode, duration)) 110 | prelines = prelines_of_file(warnings_fpath) 111 | 112 | elif parsed_path.path == '/makehtml': 113 | for afile in files_to_empty_at_start: 114 | if ospe(afile): 115 | with open(afile, 'wb') as f2: 116 | pass 117 | atime = time.time() 118 | exitcode = makehtml() 119 | btime = time.time() 120 | duration = '%3.3f' % round(btime - atime, 3) 121 | if exitcode: 122 | http_response_code = 503 123 | msglines.append('%s, %s, exitcode: %s, took: %s seconds' % 124 | (http_response_code, 'failed', exitcode, duration)) 125 | else: 126 | msglines.append('%s, %s, exitcode: %s, took: %s seconds' % 127 | (http_response_code, 'succeeded', exitcode, duration)) 128 | prelines = prelines_of_file(warnings_fpath) 129 | 130 | elif parsed_path.path == '/show_cmd': 131 | prelines = prelines_of_file(cmd_fpath) 132 | 133 | elif parsed_path.path == '/show_stdout': 134 | prelines = prelines_of_file(stdout_fpath) 135 | 136 | elif parsed_path.path == '/show_stderr': 137 | prelines = prelines_of_file(stderr_fpath) 138 | 139 | elif parsed_path.path == '/show_warnings': 140 | prelines = prelines_of_file(warnings_fpath) 141 | 142 | elif parsed_path.path == '/shutdown': 143 | server.shutdown() 144 | 145 | else: 146 | http_response_code = 501 147 | msglines.append('%s, %s' % 148 | (http_response_code, 'unknown action, showing debug info')) 149 | prelines = [ 150 | 'CLIENT VALUES:', 151 | 'client_address=%s (%s)' % (self.client_address, 152 | self.address_string()), 153 | 'command=%s' % self.command, 154 | 'path=%s' % self.path, 155 | 'real path=%s' % parsed_path.path, 156 | 'query=%s' % parsed_path.query, 157 | 'request_version=%s' % self.request_version, 158 | '', 159 | 'SERVER VALUES:', 160 | 'server_version=%s' % self.server_version, 161 | 'sys_version=%s' % self.sys_version, 162 | 'protocol_version=%s' % self.protocol_version, 163 | 'thread=%s' % threading.currentThread().getName(), 164 | '', 165 | 'HEADERS RECEIVED:', 166 | ] 167 | for name, value in sorted(self.headers.items()): 168 | prelines.append('%s=%s' % (name, value.rstrip())) 169 | prelines.append('') 170 | prelines = [_quote_html(aline.rstrip()) for aline in prelines] 171 | 172 | self.send_response(http_response_code) 173 | self.send_header('content-type', 'text/html') 174 | self.end_headers() 175 | 176 | host = self.headers['host'] 177 | links = [] 178 | links.append('/makehtml' % host) 179 | links.append('makehtml_no_cache' % host) 180 | links.append('/show_warnings' % host) 181 | links.append('/show_stderr' % host) 182 | links.append('/show_stdout' % host) 183 | links.append('/show_cmd' % host) 184 | links.append('/debug_info' % host) 185 | links.append('/shutdown' % host) 186 | msglines.append('
| ' + ' | '.join(links) + ' |
') 187 | 188 | message2 = '' 189 | if prelines: 190 | prelines.insert(0, '
')
191 |             prelines.append('
') 192 | prelines = ['%s\r\n' % aline for aline in prelines] 193 | 194 | message = '
\r\n'.join(msglines) 195 | message2 = ''.join(prelines) 196 | self.wfile.write(message + message2) 197 | return 198 | 199 | 200 | class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): 201 | """Handle requests in a separate thread.""" 202 | 203 | if __name__ == '__main__': 204 | port = 9999 205 | if len(sys.argv) == 2: 206 | port = int(sys.argv[1]) 207 | server = ThreadedHTTPServer(('0.0.0.0', port), GetHandler) 208 | print( 209 | 'Starting server to run \'sphinx-build\'.\n' 210 | 'Get http://127.0.0.1:%(port)s/makehtml to run sphinx-build.\n' 211 | 'Use http://127.0.0.1:%(port)s/shutdown or to stop.' 212 | % {'port': port}) 213 | server.serve_forever() 214 | -------------------------------------------------------------------------------- /ALL-for-build/Toolchains/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !/.gitignore 3 | -------------------------------------------------------------------------------- /ALL-for-build/global-gitconfig.cfg: -------------------------------------------------------------------------------- 1 | ; This is a fix for a nasty GIT bug. 2 | ; Save this file as /.gitconfig 3 | ; If the container is running with --user=1000:1000 for example that user 4 | ; is not in /etc/passwd and the user has no name. But GIT tries to find a 5 | ; name when doing a clone and aborts with exitcode 128 and a complaint about 6 | ; "user is not in passwd" 7 | ; When a user is defined like here in the /.gitconfig GIT stops complaining. 8 | 9 | [user] 10 | name = user name 11 | email = user@email.dummy 12 | -------------------------------------------------------------------------------- /ALL-for-build/userhome/.bashrc: -------------------------------------------------------------------------------- 1 | 2 | # this is .bashrc 3 | -------------------------------------------------------------------------------- /ALL-for-build/userhome/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t3docs/docker-render-documentation/243142aaa1a16b6d6f6d5bcd32c3e21289afa89d/ALL-for-build/userhome/.gitkeep -------------------------------------------------------------------------------- /ALL-for-build/venv/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t3docs/docker-render-documentation/243142aaa1a16b6d6f6d5bcd32c3e21289afa89d/ALL-for-build/venv/.gitkeep -------------------------------------------------------------------------------- /ALL-for-build/venv/info.txt: -------------------------------------------------------------------------------- 1 | info.txt about /ALL/venv and /ALL/venv/.venv 2 | 3 | 2021-08-25 4 | ========== 5 | 6 | Why docutils<0.17? See: https://docutils.sourceforge.io/RELEASE-NOTES.html 7 | 8 | 2020-05-07 9 | ========== 10 | 11 | As of today we'll stop using 'pipenv' as it's not really actively being 12 | maintained. 13 | 14 | 15 | Before 2020-05-07 16 | ================= 17 | 18 | We were thinking the following: 19 | 20 | 1. At image build time a Python virtual environment is created here from the 21 | Pipfile. 22 | 23 | 2. When running the container /ALL/venv is the WORKDIR = current dir. 24 | 25 | 3. It is expected that the TCT config file can be found here as 26 | /ALL/venv/tctconfig.cfg 27 | 28 | 4. We will be using subfolder '.venv' for the virtual Python environment. 29 | 'pipenv' will use that folder automatically if it exists. 30 | 31 | 5. 'pipenv' documentation can be found at https://docs.pipenv.org/en/latest/ 32 | Example to run pipenv: `PIPENV_VENV_IN_PROJECT=1 pipenv install` 33 | 34 | 35 | End of info.txt 36 | -------------------------------------------------------------------------------- /ALL-for-build/venv/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | future 2 | setuptools-scm -------------------------------------------------------------------------------- /ALL-for-build/venv/requirements.txt: -------------------------------------------------------------------------------- 1 | docutils<0.17 2 | sphinx>=4.5.0,<5.0 3 | beautifulsoup4 4 | configparser 5 | lxml 6 | pathlib2 7 | pillow 8 | pytest 9 | pyyaml 10 | recommonmark 11 | sphinx-copybutton 12 | sphinx-collections 13 | sphinx-panels 14 | sphinx-rtd-theme 15 | sphinx-tabs>=3.2.0,<3.3.0 16 | sphinxcontrib-gitloginfo 17 | sphinxcontrib-plantuml 18 | subprocess32 19 | toml 20 | git+https://github.com/TYPO3-Documentation/sphinxcontrib-docstypo3.git@v1.0.dev5 21 | git+https://github.com/TYPO3-Documentation/sphinxcontrib-phpdomain.git@develop-for-typo3 22 | https://github.com/TYPO3-Documentation/sphinx-contrib-slide/archive/v1.1.0.zip 23 | https://github.com/TYPO3-Documentation/sphinx-contrib-youtube/archive/t3v1.1.0.zip 24 | https://github.com/TYPO3-Documentation/sphinxcontrib.t3fieldlisttable/archive/v0.3.1.zip 25 | https://github.com/TYPO3-Documentation/sphinxcontrib.t3tablerows/archive/v0.3.1.zip 26 | https://github.com/TYPO3-Documentation/sphinxcontrib.t3targets/archive/v0.3.5.zip 27 | https://github.com/TYPO3-Documentation/t3SphinxTools_includecheck/archive/v1.0.0.zip 28 | 29 | -------------------------------------------------------------------------------- /ALL-for-build/venv/tctconfig.cfg: -------------------------------------------------------------------------------- 1 | [general] 2 | temp_home = /tmp 3 | toolchains_home = /ALL/Toolchains/ 4 | 5 | [default] 6 | buildsettings_builddir_root = /tmp/RenderDocumentation/Webroot 7 | conf_py_masterfile = /ALL/Makedir/conf.py 8 | drafts_builddir_relpath = typo3cms/drafts 9 | extensions_builddir_relpath = typo3cms/extensions 10 | extensions_rootfolder = /tmp/T3EXTENSIONS 11 | htaccess_template_show_latest = /ALL/Makedir/_htaccess 12 | repositories_rootfolder = /tmp/T3REPOS 13 | webroot_abspath = /tmp/RenderDocumentation/Webroot 14 | webroot_part_of_builddir = /tmp/RenderDocumentation/Webroot 15 | 16 | # Override these on the commandline. 17 | # Keep these defaults turned off here: 18 | # make_latex=0, make_package=0, make_pdf=0, make_singlehtml=0 19 | disable_include_files_check = 1 20 | force_rebuild_needed = 1 21 | make_latex = 0 22 | make_package = 0 23 | make_pdf = 0 24 | make_singlehtml = 0 25 | rebuild_needed = 1 26 | remove_docutils_conf = 0 27 | replace_static_in_html = 0 28 | resultdir = /RESULT 29 | reveal_exitcodes = 1 30 | reveal_milestones = 1 31 | talk = 1 32 | try_pdf_build_from_published_latex = 0 33 | 34 | 35 | # others 36 | email_admin = 37 | email_user_bcc = 38 | email_user_cc = 39 | email_user_do_not_send = 0 40 | email_user_receivers_exlude_list = , 41 | email_user_send_to_admin_too = 0 42 | email_user_to = 43 | latex_contrib_typo3_folder = /ALL/Downloads/texmf_typo3 44 | lockfile_name = lockfile.json 45 | smtp_host= 46 | url_of_webroot = https://docs.typo3.org/ 47 | -------------------------------------------------------------------------------- /CHANGES.rst: -------------------------------------------------------------------------------- 1 | Release v3.2.0 (2023-07-06) 2 | =========================== 3 | 4 | * Use sphinx_typo3_theme v4.9.0 5 | 6 | 7 | Release v3.1.0 (2023-06-23) 8 | =========================== 9 | 10 | * Add DOCKRUN_FN_QUIET to show-shell-commands 11 | * Use sphinx_typo3_theme v4.8.0 12 | * Release as ghcr.io/t3docs/render-documentation:v3.1.0 13 | * Release as ghcr.io/t3docs/render-documentation:latest 14 | 15 | 16 | Release v3.0.0 (2023-06-13) 17 | =========================== 18 | 19 | From branch master: 20 | 21 | * Release as ghcr.io/t3docs/render-documentation:v3.0.0 22 | * Release as ghcr.io/t3docs/render-documentation:latest 23 | 24 | 25 | Release v3.0.dev31 (2023-06-12) 26 | =============================== 27 | 28 | * Update README.rst 29 | 30 | * Use sphinx_typo3_theme v4.7.10 (= master). 31 | Line numbers of codeblocks aren't included 32 | and selected any more when copying. 33 | 34 | * Use toolchain 'RenderDocumentation v3.2.0'. 35 | This should fix some layout problems caused by the fact, 36 | that Docutils inserts css class 'container' which is 37 | also used by the Bootstrap layout package. 38 | Those classes get renamed to 'du-container'. 39 | 40 | * Dockerfile.build.sh now knows about an option 41 | PLANTUML_JAR_VERSION which can be used in junction 42 | with the 'make build' command. Run 'make' for an 43 | example. 44 | 45 | Release v3.0.dev30 (2022-09-23) 46 | =============================== 47 | 48 | * Use sphinx_typo3_theme v4.7.9 49 | 50 | 51 | Release v3.0.dev29 (2022-09-23) 52 | =============================== 53 | 54 | * Use sphinx_typo3_theme v4.7.8 55 | 56 | 57 | Release v3.0.dev28 (2022-09-05) 58 | =============================== 59 | 60 | * Use sphinx_typo3_theme v4.7.7 61 | 62 | 63 | Release v3.0.dev27 (2022-07-25) 64 | =============================== 65 | 66 | * Use sphinx_typo3_theme v4.7.6 67 | 68 | 69 | Release v3.0.dev26 (2022-07-15) 70 | =============================== 71 | 72 | * Use sphinx>=4.5.0,<5.0 73 | 74 | 75 | Release v3.0.dev25 (2022-07-12) 76 | =============================== 77 | 78 | * Test suite for DRC was successfully run 79 | * Updated: mainmenu.sh, now also knows T3DOCS_GIT_RESTORE_MTIME=1 (or 0) 80 | * Improved and bugfixed: 'make build' and 'Dockerfile.build.sh' 81 | * Use sphinx_typo3_theme 4.7.5 82 | 83 | 84 | Release v3.0.dev24 (2022-05-17) 85 | =============================== 86 | 87 | * BUGFIX: Fix quoting of $@ in mainmenu.sh 88 | 89 | 90 | Release v3.0.dev23 (2022-05-09) 91 | =============================== 92 | 93 | * BUGFIX: Fix quoting of $@ in mainmenu.sh 94 | 95 | 96 | Release v3.0.dev22 (2022-05-09) 97 | =============================== 98 | 99 | * Use TCT v1.3.0 100 | * Use Theme v4.7.3 101 | * Use Toolchain v3.1.0 102 | 103 | 104 | Release v3.0.dev21 (2022-05-05) 105 | =============================== 106 | 107 | * Use theme v4.7.3 108 | 109 | 110 | Release v3.0.dev20 (2022-05-04) 111 | =============================== 112 | 113 | * Use sphinxcontrib-docstypo3.git@v1.0.dev5 114 | * Use theme v4.7.2 115 | 116 | 117 | Release v3.0.dev19 (2022-05-04) 118 | =============================== 119 | 120 | * Use theme v4.7.1 121 | 122 | Release v3.0.dev18 (2022-04-26) 123 | =============================== 124 | 125 | * update conf.py: do not load sphinxcontrib.t3targets by default 126 | 127 | Release v3.0.dev16 (2022-04-23) 128 | =============================== 129 | 130 | * use latest sphinx_typo3_theme v4.7.dev (+scm version) 131 | * use latest toolchain 2.12.dev4 132 | 133 | 134 | Release v3.0.dev13 (2022-04-06) 135 | =============================== 136 | 137 | * update conf.py, Default.cfg: Add section [sphinx_object_types_to_add] 138 | 139 | 140 | Release v3.0.dev12 (2022-02-15) 141 | =============================== 142 | 143 | * update conf.py: add toml, strip types from confval 144 | * use custom sphinxcontrib-phpdomain@develop-for-typo3 145 | 146 | 147 | Release v3.0.dev11 (2021-12-xx) 148 | ============================== 149 | 150 | * update conf.py 151 | * Allow list-like string in Settings.cfg for 'graphviz_dot_args' 152 | * update extlinks, adding 't3ext' and 'packagist' 153 | * work on EditButton for GitHub, Bitbucket, GitLab 154 | * Update docutils.conf 155 | 156 | 157 | Release v3.0.dev10 (2021-12-14) 158 | ============================== 159 | 160 | * Turn parallel reading off with sphinxcontrib.t3targets/archive/v0.3.5.zip 161 | 162 | 163 | Release v3.0.dev9 (2021-12-13) 164 | ============================== 165 | 166 | * Update sphinxcontrib.docstypo3 and use v1.0.dev4 167 | * Use sphinx_typo3_theme v4.7.dev6 168 | 169 | * Create project links in footer not only when rendering for docs.typo3.org 170 | 171 | 172 | Release v3.0.dev7 (2021-11-01) 173 | ============================== 174 | 175 | * Add sphinxcontrib.docstypo3 176 | 177 | Release v3.0.dev6 (2021-11-06) 178 | ============================== 179 | 180 | * Set nitpick_ignore_regex in conf.py. 181 | 182 | Release v3.0.dev5 (2021-11-06) 183 | ============================== 184 | 185 | * Use newer toolchain. 186 | * Use newer theme 187 | 188 | Release v3.0.dev4 (2021-11-05) 189 | ============================== 190 | 191 | * Update docutils.conf 192 | * Add Sphinx extension sphinxcontrib.collections 193 | 194 | Release v3.0.dev3 (2021-11-02) 195 | ============================== 196 | 197 | * [FEATURE]] Add Sphinx extension "sphinx-tabs" 198 | https://sphinx-panels.readthedocs.io/en/latest/ 199 | 200 | * Includes latest version of the theme with Display Settings Options like 201 | 'Use full width' and 'Make settings permanent'. 202 | 203 | 204 | Release v3.0.dev2 (2021-10-20) 205 | ============================== 206 | 207 | * [MAJOR CHANGE] Use newer versions: 208 | 209 | * Python v3.8.10 (was v2.7) 210 | * Sphinx v4.2.x (was v1.8.5) 211 | * sphinx_typo3_theme >=4.7.dev1 212 | * tct >=1.2.0 213 | * toolchain_RenderDocumentation v2.12.dev1 214 | 215 | Release v2.9.0 (2021-07-22) 216 | =========================== 217 | 218 | * [FEATURE] Use sphinx_typo3_theme >=4.6 with global search 219 | * [FEATURE] Add sphinx-copybutton to code-blocks 220 | 221 | 222 | Release 'develop' (v2.8.3 (2021-03-29) 223 | ====================================== 224 | 225 | * [FEATURE] Add just1sphinxbuild functionality 226 | 227 | 228 | Release v2.8.2 (2021-03-27) 229 | =========================== 230 | 231 | * [FEATURE] Add serve4build functionality 232 | 233 | 234 | Release v2.8.1 (Mar 26, 2021) 235 | ============================ 236 | 237 | * Use sphinx_typo3_theme v4.5.2 238 | * Disable autoSelect for Sphinx search autocompletion 239 | * Set h2edit_url in Overrides.cfg 240 | * Link "How to edit" to proper URL and show always and not as hover effect 241 | * Constrain area of logo link to actual image 242 | 243 | 244 | Release v2.8.0 245 | ============================ 246 | 247 | * Using sphinx_typo3_theme v4.5.1 248 | * How to edit button 249 | * Sphinx can use parallel processes 250 | * Collapsed menu for TYPO3 Exceptions 251 | * Removed: Full width for extra wide screens 252 | 253 | 254 | Release v2.7.1 (Jan 6, 2021) 255 | ============================ 256 | 257 | * Use sphinx_typo3_theme v4.4.2 with styled Index page 258 | 259 | 260 | Release v2.7.0 (Dec 16, 2020) 261 | ============================= 262 | 263 | New 264 | --- 265 | 266 | * 42e0120 Show OS_NAME and OS_VERSION in versioninfo 267 | * 111c165 Use Ubuntu 20.04 268 | * f5efcb3 Add Graphviz 269 | * 8b81f71 Add PlantUML 270 | * 1eb5b7a `exclude_patterns` can be specified in Defaults.cfg, Settings.cfg, 271 | Overrides.cfg 272 | 273 | 274 | Removed 275 | ------- 276 | 277 | * 7fcc524 Remove sphinxcontrib.googlemaps - doesn't work any more 278 | * c074131 Drop Sphinx extension googlechart - Google stopped service 279 | 280 | 281 | Important commits 282 | ----------------- 283 | 284 | * e5165c2 Use Toolchain v2.11.0 285 | * e15ff08 Add Sphinx extension sphinx-tabs 286 | * 74c96c8 Update dockrun_t3rd.bat - Tested batch file for Windows 287 | * f0758b7 Add dockrun_t3rd.bat for Windows users 288 | * 7fcc524 Remove sphinxcontrib.googlemaps 289 | * 42e0120 Show OS_NAME and OS_VERSION in versioninfo 290 | * c074131 Drop Sphinx extension googlechart 291 | * 111c165 Use Ubuntu 20.04 292 | * f5efcb3 Add Defaults.cfg, update conf.py, add Graphviz - Martin Bless 293 | * 8b81f71 Merge pull request #97 from alexander-nitsche/feature/sphinx-plantuml 294 | * 1eb5b7a [FEATURE] Implement Issue 98, exclude_patterns 295 | 296 | 297 | Release v2.6.1 (May 26, 2020) 298 | ============================= 299 | 300 | * Bugfix: Make on-the-fly installation of Sphinx extensions from /WHEELS work. 301 | 302 | 303 | Release v2.6.0 (May 11, 2020) 304 | ============================= 305 | 306 | Using `sphinx_typo3_theme v2.4.0`, `sphinxcontrib.gitloginfo v1.0.0` (new), 307 | toolchain `RenderDocumentation v2.10.1`. 308 | 309 | * Toolchain: FINAL_EXIT_CODE should now be trustworthy and either have 310 | value `0` (success) or value `255` (failure). `0` means, the toolchain 311 | came to an end and at least the step "build html" was successful. 312 | `255` indicates a failure where either the toolchain didn't come to normal 313 | end or html wasn't built. 314 | 315 | * Theme: 'last modified' date appears in page html head section if 316 | available. 317 | 318 | * Theme: 'Last updated' in the page footer with a link to the latest commit. 319 | 320 | * Theme: Search result pages with highlighted search text show a link to 321 | deselect the hightlighting. 322 | 323 | * Theme: The intra page menu is now appended to the left menu column to fix 324 | the - so called - "missing third menu level" issue. 325 | 326 | * Theme: The logo is now defineable in the theme configuration file 327 | `theme.conf`. 328 | 329 | * Toolchain: `dockrun_t3rd makehtml -c allow_unsafe 1` to skip the extensive 330 | and time consuming html postprocessing, to skip file include checks and to 331 | allow the reST 'raw' directive. 332 | 333 | * Toolchain: `dockrun_t3rd makehtml -c sphinxVerboseLevel n'. With `n=3` 334 | the Sphinx build will be started with three times `-v`. This would mean 335 | `sphinx-build -v -v -v …` 336 | 337 | Bug fixes: 338 | 339 | * Theme: Remove false warnings about illegal theme options 340 | * Toolchain: Remove pip warnings about 'Cache dir not writable'. 341 | 342 | 343 | 344 | Release v2.5.1 (Feb 26, 2020) 345 | ============================= 346 | 347 | * Use toolchain v2.9.1: Fix static files 348 | 349 | 350 | Release v2.5.0 (Feb 25, 2020) 351 | ============================= 352 | 353 | * Use develop.zip of Sphinx extension t3targets to fix 354 | https://github.com/t3docs/docker-render-documentation/issues/80 Line numbers 355 | point to *.txt instead of *.rst.txt 356 | Fixed with `b0d6a7 357 | ` 358 | and 359 | https://github.com/TYPO3-Documentation/sphinxcontrib.t3targets/releases/tag/v0.3.0 360 | 361 | * Use sphinx_typo3_theme from PyPi 362 | * Use toolchain v2.9.0 363 | * Add T3DOCS_WHEELS folder. If it contains Python wheel packages, those get 364 | installed within the container prior to rendering. So this is an easy way to 365 | extra install Python packages prior to rendering. 366 | 367 | 368 | 369 | Release v2.4.0 (Oct 21, 2019) 370 | ============================= 371 | 372 | * Add 'dockrun_t3rd /usr/bin/bash' 373 | * Use Toolchain v2.8.0 374 | * Use TCT v1.1.0 375 | * Account for /THEMES mapping 376 | * Add 'ablog' to Pipfile 377 | * 6ff41f3 List localizations in 'Find the results' 378 | * 8785da4 Add directive and textrole 'confval' in conf.py 379 | 380 | 381 | 382 | Release v2.3.0 (August 19, 2019) 383 | ================================ 384 | 385 | * Use toolchain >= v2.7.1 386 | 387 | 388 | 389 | Release v2.2.6 (released June 23, 2019) 390 | ======================================= 391 | 392 | * Use bugfixed toolchain v2.6.1 393 | 394 | 395 | 396 | Release v2.2.5 (released June 22, 2019) 397 | ======================================= 398 | 399 | * Build again, make sphinx-contrib-slide-t3v1.0.1.zip available 400 | 401 | 402 | 403 | Release v2.2.4 (released June 22, 2019) 404 | ======================================= 405 | 406 | Bugs fixed 407 | ---------- 408 | 409 | * Solve `issue #72 of container 410 | `__ 411 | "Sphinx directive 'slide' not working". Explained `here 412 | `__. 413 | 414 | Features added 415 | -------------- 416 | 417 | * The `.. slide::` directive can now embed "Google documents" and "Google 418 | spreadsheets" as well. Explained `here 419 | `__. 420 | 421 | Use toolchain v2.6.0 422 | -------------------- 423 | 424 | | ffbd087 Dump info to stdout if there are forbidden include files 425 | | f68ebf0 Dump warnings.txt to stdout if not in _buildinfo 426 | | 4606616 Add rel="nofollow noopener" to external + foreign links 427 | | ee6533e Return sitemap-files in .txt format and not .json as result 428 | | ec9fb21 Provide sitemap-files as .txt file too 429 | | 4d65da1 v2.6.0 Set new version number 430 | 431 | 432 | 433 | Release v2.2.1 (released June 14, 2019) 434 | ======================================= 435 | 436 | Bugfix version 437 | 438 | * Fix logic error (don't always assume singlehtml) 439 | * Use TCT v0.4.1 showing ms = milli seconds 440 | * Use toolchain v2.5.1 441 | 442 | 443 | 444 | Release v2.2.0 (released June 14, 2019) 445 | ======================================= 446 | 447 | Enhancements 448 | ------------ 449 | 450 | * Issues #63, #64 done in toolchain 451 | * Finetuned output of mainmenu.sh 452 | * Allow 'T3DOCS_DRY_RUN=1 dockrun_t3rd makehtml' 453 | * Allow 'dockrun_t3rd export-ALL' to copy the container internals to the host 454 | 455 | 456 | Use toolchain RenderDocumentation v2.5.0 457 | ----------------------------------------- 458 | 459 | * Don't offer docs/manual.sxw as possibility 460 | * Solve `issue #64 of t3docs/docker-render-documentation 461 | `__ 462 | "Weird appearance of README" rendering 463 | * Collect sitemap files `issue #63 of t3docs/docker-render-documentation 464 | `__ 465 | * Postprocess html files: prettify, sanitize neutralize javascript links 466 | `issue #67 of t3docs/docker-render-documentation 467 | `__ 468 | * Signal 'has_neutralized_links' in _builtinfo/results.json 469 | 470 | 471 | Security fixes 472 | -------------- 473 | 474 | * Disable raw-directive `issue #65 of t3docs/docker-render-documentation 475 | `__ 476 | * Issues #67 done in toolchain 477 | 478 | 479 | 480 | Release v2.1.0 (released May 29, 2019) 481 | ====================================== 482 | 483 | Enhancements 484 | ------------ 485 | 486 | * `#11: `__ 487 | Again: Improve the output of "Find the results:" 488 | 489 | * `#50 `__ 490 | Now installing specific versions from Pipfile 491 | 492 | 493 | Bugs fixed 494 | ---------- 495 | 496 | * `#51: `__ 497 | Sphinx caching is working again. Removed recommonmark parser. 498 | 499 | * `#54: `__ 500 | Have markdown files converted to rst by pandoc. 501 | 502 | * `#58: `__ 503 | Catch YAML parser errors the better way. 504 | 505 | 506 | Significant internal changes 507 | ---------------------------- 508 | 509 | * `#55: `__ 510 | Use /ALL/venv as workdir, remove folder /ALL/Rundir 511 | 512 | 513 | 514 | Release v2.0.0 (released May 25, 2019) 515 | ====================================== 516 | 517 | This is a complete revamp of v1.6 of branch '1-6'. 518 | 519 | 520 | Characteristics 521 | --------------- 522 | 523 | * codename 'dockrun_t3rd' 524 | * based on image ubuntu:18.04 525 | * almost migrated to Python 3 526 | * using pipenv as Python packet manager 527 | * only for html and singlehtml 528 | * much smaller in size 529 | 530 | 531 | Enhancements 532 | ------------ 533 | 534 | * `#11 `__ 535 | Improve the output of "Find the results:" 536 | 537 | * `#53 `__ 538 | Load `these sphinx extensions 539 | `__ 540 | by default 541 | 542 | 543 | 544 | Features added 545 | -------------- 546 | 547 | * `#20 `__ 548 | Add sphinxcontrib.phpdomain 549 | 550 | 551 | Bugs fixed 552 | ---------- 553 | 554 | * `#03: `__ 555 | Fix sphinxcontrib.googlemaps 556 | 557 | * `#18: `__ 558 | Fix sphinxcontrib.googlemaps 559 | 560 | * `#31: `__ 561 | Fix rendering of standalone README.(rst|md) 562 | 563 | * `#52: `__ 564 | Fix sphinxcontrib.googlechart 565 | 566 | 567 | 568 | Previous v1.6 releases (forked May 25, 2019) 569 | ============================================ 570 | 571 | Maintained in branch `1-6 572 | ` __ 573 | 574 | 575 | 576 | Release v1.6.11-html (released May 23, 2018) 577 | ============================================ 578 | 579 | Bugs fixed 580 | ---------- 581 | 582 | * typoscript syntax highlighter should now always succeed 583 | * PDF generation working again 584 | 585 | Features added 586 | -------------- 587 | 588 | * update mtime of repo files automatically if 'git-restore-mtime' is in path 589 | 590 | Info 591 | ---- 592 | 593 | * improved toolchain 594 | * as before: uses Sphinx caching 595 | * standalone *.zip is much smaller, as most fonts aren't shipped any more 596 | 597 | 598 | 599 | Release v1.6.9-full (released May 10, 2018) 600 | =========================================== 601 | 602 | ... 603 | 604 | 605 | 606 | Release v1.6.6 (released May 2, 2018) 607 | ===================================== 608 | 609 | ... 610 | 611 | 612 | 613 | Release v1.6.4 (released Nov 16, 2017) 614 | ====================================== 615 | 616 | * Bump version from v0.6.3 to v1.6.4 617 | * Use toolchain RenderDocumentation v2.2.0 618 | 619 | 620 | 621 | Release v0.6.3 (released at the beginning of time) 622 | ================================================== 623 | 624 | ... 625 | 626 | 627 | 628 | Contributing here 629 | ================= 630 | 631 | Some recommended headlines: 632 | 633 | | Bugs fixed 634 | | Dependencies 635 | | Deprecated 636 | | Features added 637 | | Features removed 638 | | Enhancements 639 | | Incompatible changes 640 | | Significant internal changes 641 | 642 | Maximum characters per line: 79 (except longlinks) 643 | 644 | 1 2 3 4 5 6 7 645 | 646 | 1234567890123456789012345678901234567890123456789012345678901234567890123456789 647 | 648 | End of CHANGES. 649 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | Contribute 3 | ========== 4 | 5 | Issues 6 | ====== 7 | 8 | Please use the `issue tracker 9 | `__ to report issues. 10 | 11 | 12 | Pull Requests 13 | ============= 14 | 15 | You are welcome to submit pull requests to propose changes. 16 | 17 | See `GitHub: Creating a pull request `__ 18 | for information about creating a pull request. 19 | 20 | Before submitting a pull request: 21 | 22 | #. If it is not a minor change you may want to discuss this first: Use the Slack channel 23 | #typo3-documentation on https://typo3.slack.com (`register for Slack 24 | `__ first) or create an `issue 25 | `__ for this. 26 | #. If you make changes to the rendering, be sure to test this locally before submitting 27 | the pull request 28 | 29 | 30 | Test Changes to Docker Image Locally 31 | ==================================== 32 | 33 | #. As usual, fork and clone the GitHub repository `t3dock/docker-render-documentation 34 | `__ 35 | #. Enter the cloned repository:: 36 | 37 | cd docker-render-documentation 38 | #. As usual, create a branch:: 39 | 40 | git checkout -b feature/xyz 41 | #. You can build the docker image locally, using a different name:: 42 | 43 | docker build -t render-documentation-local . 44 | 45 | #. Now get a documentation project and use the locally built docker image, 46 | for example:: 47 | 48 | git clone https://github.com/TYPO3-Documentation/TYPO3CMS-Guide-ContributionWorkflow.git 49 | cd TYPO3CMS-Guide-ContributionWorkflow 50 | docker-compose run --rm html-local 51 | 52 | The name/version used in the docker-compose.yml file must be the same one as used by 53 | `docker build`. Here, we use the name **render-documentation-local**. 54 | 55 | If your documentation project does not have a docker-compose.yml file for docker-compose 56 | you can easily add one, see 57 | `Quickstart with Docker Compose `__. 58 | 59 | If you use the workflow with source / run and `dockrun_t3rd makehtml`, then once you 60 | generated the documentation, you can 61 | modify the file `Documentation-GENERATED-temp/last-docker-run-command-GENERATED.sh` 62 | and replace the name / version of the Docker image with your locally built one and execute 63 | this file to render the documentation with your locally built Docker image. 64 | 65 | Use local version of Theme 66 | ========================== 67 | 68 | While working on https://github.com/TYPO3-Documentation/t3SphinxThemeRtd you need to 69 | test those changes. 70 | 71 | In order to do so, run the Container and add another volume, in order to overwrite 72 | the included theme. The additional volume looks like: 73 | 74 | -v /home/daniels/Projects/typo3/docs/t3SphinxThemeRtd/t3SphinxThemeRtd:/ALL/userhome/.local/share/virtualenvs/venv-y0waPz_e/lib/python2.7/site-packages/t3SphinxThemeRtd:ro \ 75 | 76 | The left side it the full absolute path to the theme. The right one is the absolute 77 | path to the installed theme within the container. 78 | 79 | NOTE that `venv-y0waPz_e` might be different for each build version of the container. 80 | In order to get the working path, start the container and attach to it, and look up 81 | the concrete path. 82 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | # Reflect the development progress. Set to the release number or something 4 | # like vX.Y.devN 5 | ARG OUR_IMAGE_VERSION=v3.2.0 6 | 7 | # 1. Specify tag. 8 | # Should be 'latest' or 'develop' or '' where 9 | # real release versions looks like 'v3.0.0' 10 | # 11 | # 2. Specify short name. 12 | # 'show-shell-commands' will then use 'dockrun_' 13 | # to name the helper function. 14 | # 15 | # 3. Use this pair for the latest version in branch 'master': 16 | # ARG OUR_IMAGE_TAG=latest 17 | # ARG OUR_IMAGE_SHORT=t3rd 18 | # 19 | # or 20 | # 21 | # Use this pair for the 'develop' branch: 22 | # ARG OUR_IMAGE_TAG=develop 23 | # ARG OUR_IMAGE_SHORT=develop 24 | # 25 | # or 26 | # 27 | # Use this pair for the latest version in branch 'master': 28 | # ARG OUR_IMAGE_TAG=v3.0.dev31 29 | # ARG OUR_IMAGE_SHORT=v3.0.dev31 30 | # 31 | # or 32 | # 33 | # Use this pair for the latest version in branch 'master': 34 | # ARG OUR_IMAGE_TAG=v3.0.dev31 35 | # ARG OUR_IMAGE_SHORT=t3rd 36 | # 37 | 38 | ARG OUR_IMAGE_TAG=latest 39 | ARG OUR_IMAGE_SHORT=t3rd 40 | 41 | # flag for apt-get - affects only build time 42 | ARG DEBIAN_FRONTEND=noninteractive 43 | ARG DOCKRUN_PREFIX="dockrun_" 44 | ARG OUR_IMAGE_SLOGAN="${DOCKRUN_PREFIX}${OUR_IMAGE_SHORT} - TYPO3 render documentation" 45 | 46 | # PlantUML tagged file name as shown on https://github.com/plantuml/plantuml/releases/ 47 | ARG PLANTUML_JAR_VERSION="1.2023.6" 48 | 49 | # THEME_MTIME=1688594400=python -c "import datetime; print(int(datetime.datetime(2023, 7, 6).timestamp()))" 50 | ENV \ 51 | LC_ALL=C.UTF-8 \ 52 | LANG=C.UTF-8 \ 53 | HOME="/ALL/userhome" \ 54 | OUR_IMAGE="t3docs/render-documentation:${OUR_IMAGE_TAG}" \ 55 | OUR_IMAGE_SHORT="${OUR_IMAGE_SHORT}" \ 56 | OUR_IMAGE_VERSION="$OUR_IMAGE_VERSION" \ 57 | PIP_NO_CACHE_DIR=1 \ 58 | PIP_CACHE_DIR="/ALL/userhome/.cache/pip" \ 59 | PIP_DISABLE_PIP_VERSION_CHECK=1 \ 60 | PIP_NO_PYTHON_VERSION_WARNING=1 \ 61 | PLANTUML_JAR_VERSION="${PLANTUML_JAR_VERSION}" \ 62 | THEME_MTIME="1688594400" \ 63 | THEME_NAME="unknown" \ 64 | THEME_PIP_SOURCE="git+https://github.com/TYPO3-Documentation/sphinx_typo3_theme@v4.9.0" \ 65 | THEME_VERSION="unknown" \ 66 | TOOLCHAIN_TOOL_VERSION="v1.3.0" \ 67 | TOOLCHAIN_TOOL_URL="https://github.com/marble/TCT/archive/refs/tags/v1.3.0.zip" \ 68 | TOOLCHAIN_UNPACKED="Toolchain_RenderDocumentation-3.2.0" \ 69 | TOOLCHAIN_URL="https://github.com/marble/Toolchain_RenderDocumentation/archive/refs/tags/v3.2.0.zip" \ 70 | TOOLCHAIN_VERSION="3.2.0" \ 71 | TYPOSCRIPT_PY_URL="https://raw.githubusercontent.com/TYPO3-Documentation/Pygments-TypoScript-Lexer/v2.2.4/typoscript.py" \ 72 | TYPOSCRIPT_PY_VERSION="v2.2.4" 73 | 74 | ## Set THEME_PIP_SOURCE to any argument PIP accepts, like: 75 | # THEME_PIP_SOURCE=sphinx_typo3_theme 76 | # THEME_PIP_SOURCE=git+https://github.com/TYPO3-Documentation/sphinx_typo3_theme@develop 77 | # THEME_PIP_SOURCE=git+https://github.com/TYPO3-Documentation/sphinx_typo3_theme/releases/tag/v4.7.dev1 78 | 79 | # Notation: 80 | # TOOLCHAIN_URL="https://github.com/marble/Toolchain_RenderDocumentation/archive/develop.zip" 81 | # TOOLCHAIN_UNPACKED="Toolchain_RenderDocumentation-develop" 82 | # TOOLCHAIN_VERSION="develop (2.12.dev2)" 83 | # 84 | # TOOLCHAIN_URL="https://github.com/marble/Toolchain_RenderDocumentation/archive/refs/tags/v2.12.dev2.zip" 85 | # TOOLCHAIN_UNPACKED="Toolchain_RenderDocumentation-2.12.dev2" 86 | # TOOLCHAIN_VERSION="2.12.dev2" 87 | 88 | 89 | LABEL \ 90 | Maintainer="TYPO3 Documentation Team" \ 91 | Description="This image renders TYPO3 documentation." \ 92 | Vendor="t3docs" Version="$OUR_IMAGE_VERSION" 93 | 94 | COPY ALL-for-build /ALL 95 | 96 | WORKDIR /ALL/venv 97 | 98 | RUN \ 99 | true "Create executable COMMENT as a workaround to allow commenting here" \ 100 | && cp /bin/true /bin/COMMENT \ 101 | \ 102 | && COMMENT "Garantee folders" \ 103 | && mkdir /PROJECT \ 104 | && mkdir /RESULT \ 105 | && mkdir /THEMES \ 106 | && mkdir /WHEELS \ 107 | \ 108 | && COMMENT "Avoid GIT bug" \ 109 | && cp /ALL/global-gitconfig.cfg /root/.gitconfig \ 110 | && cp /ALL/global-gitconfig.cfg /.gitconfig \ 111 | && chmod 666 /.gitconfig \ 112 | \ 113 | && COMMENT "Install and upgrade system packages" \ 114 | && apt-get update \ 115 | && apt-get install -y apt-utils 2>/dev/null \ 116 | && apt-get upgrade -qy \ 117 | \ 118 | && COMMENT "What the toolchains needs" \ 119 | && apt-get install -yq --no-install-recommends \ 120 | git \ 121 | graphviz \ 122 | moreutils \ 123 | pandoc \ 124 | plantuml \ 125 | rsync \ 126 | tidy \ 127 | unzip \ 128 | wget \ 129 | zip \ 130 | \ 131 | && COMMENT "Make sure we also provide the latest plantuml.jar" \ 132 | && COMMENT "For example: https://github.com/plantuml/plantuml/releases/download/v1.2023.5/plantuml-1.2023.5.jar" \ 133 | && cmd="wget https://github.com/plantuml/plantuml/releases/download/v${PLANTUML_JAR_VERSION}/plantuml-${PLANTUML_JAR_VERSION}.jar \ 134 | --quiet --output-document /usr/share/plantuml/plantuml-${PLANTUML_JAR_VERSION}.jar" \ 135 | && echo $cmd \ 136 | && $cmd \ 137 | \ 138 | && COMMENT "Install python3, pip, setuptools, wheel" \ 139 | && apt-get install -yq \ 140 | python3-pip \ 141 | python3-dev \ 142 | python3.8-venv \ 143 | && COMMENT "Make python3 the default" \ 144 | && ln -s /usr/bin/python3 /usr/local/bin/python \ 145 | && pip3 install --upgrade pip wheel \ 146 | \ 147 | && COMMENT "What we need - convenience tools" \ 148 | && apt-get install -yq --no-install-recommends \ 149 | less \ 150 | nano \ 151 | ncdu \ 152 | \ 153 | && COMMENT "Try extra cleaning besides /etc/apt/apt.conf.d/docker-clean" \ 154 | && apt-get clean \ 155 | && rm -rf /var/lib/apt/lists/* \ 156 | \ 157 | && COMMENT "Python stuff" \ 158 | && rm -rf /ALL/venv/.venv \ 159 | && python3 -m venv /ALL/venv/.venv \ 160 | && bash -c 'ls -la /ALL/venv/.venv/bin' \ 161 | && python=/ALL/venv/.venv/bin/python3 \ 162 | && pip=/ALL/venv/.venv/bin/pip3 \ 163 | && $pip install wheel \ 164 | && $pip install future \ 165 | && $pip install setuptools_scm \ 166 | && $pip install "$THEME_PIP_SOURCE" "$TOOLCHAIN_TOOL_URL"\ 167 | && $pip install -r requirements.txt \ 168 | && echo source $(pwd)/.venv/bin/activate >>$HOME/.bashrc \ 169 | \ 170 | && COMMENT bash -c 'find /ALL/Downloads -name "*.whl" -exec .venv/bin/pip install -v {} \;' \ 171 | \ 172 | && COMMENT "All files of the theme of a given theme version should have the" \ 173 | && COMMENT "same mtime (last commit) to not turn off Sphinx caching" \ 174 | && destdir=$(dirname $($python -c "import sphinx_typo3_theme; print(sphinx_typo3_theme.__file__, end='')")) \ 175 | && THEME_MTIME=$($python -c "import sphinx_typo3_theme; print(sphinx_typo3_theme.get_theme_mtime())") \ 176 | && THEME_NAME=$($python -c "import sphinx_typo3_theme; print(sphinx_typo3_theme.get_theme_name())") \ 177 | && THEME_VERSION=$($python -c "import sphinx_typo3_theme; print(sphinx_typo3_theme.__version__)") \ 178 | && find $destdir -exec touch --no-create --time=mtime --date="$(date --rfc-2822 --date=@$THEME_MTIME)" {} \; \ 179 | \ 180 | && COMMENT "Update TypoScript lexer for highlighting. It comes with Sphinx" \ 181 | && COMMENT "but isn't up to date there. So we use it from our own repo." \ 182 | && COMMENT "usually: /ALL/venv/.venv/lib/python3.8/site-packages/pygments/lexers" \ 183 | && destdir=$(dirname $($python -c "import pygments; print(pygments.__file__, end='')"))/lexers \ 184 | && rm -f $destdir/typoscript.* \ 185 | && wget $TYPOSCRIPT_PY_URL --quiet --output-document $destdir/typoscript.py \ 186 | && echo curdir=$(pwd); cd $destdir; $python _mapping.py; cd $curdir \ 187 | && curdir=$(pwd); cd $destdir; $python _mapping.py; cd $curdir \ 188 | \ 189 | && COMMENT "Provide the toolchain" \ 190 | && wget ${TOOLCHAIN_URL} -qO /ALL/Downloads/Toolchain_RenderDocumentation.zip \ 191 | && unzip /ALL/Downloads/Toolchain_RenderDocumentation.zip -d /ALL/Toolchains \ 192 | && mv /ALL/Toolchains/${TOOLCHAIN_UNPACKED} /ALL/Toolchains/RenderDocumentation \ 193 | && rm /ALL/Downloads/Toolchain_RenderDocumentation.zip \ 194 | \ 195 | && python=/ALL/venv/.venv/bin/python3 \ 196 | && pip=/ALL/venv/.venv/bin/pip3 \ 197 | && touch /ALL/venv/pip-frozen-requirements.txt \ 198 | && $pip freeze > /ALL/venv/pip-frozen-requirements.txt \ 199 | \ 200 | && COMMENT "Final cleanup" \ 201 | && apt-get clean \ 202 | && COMMENT pip cache purge \ 203 | && rm -rf /tmp/* /ALL/userhome/.cache \ 204 | \ 205 | && COMMENT "Make sure other users can write" \ 206 | && chmod -R a+w \ 207 | /ALL/Makedir \ 208 | /ALL/userhome \ 209 | /ALL/venv \ 210 | /RESULT \ 211 | \ 212 | && COMMENT "Memorize the settings in the container" \ 213 | && echo "export DEBIAN_FRONTEND=\"${DEBIAN_FRONTEND}\"" >> /ALL/Downloads/envvars.sh \ 214 | && echo "export DOCKRUN_PREFIX=\"${DOCKRUN_PREFIX}\"" >> /ALL/Downloads/envvars.sh \ 215 | && echo "export OS_NAME=\"$( grep -e ^NAME= /etc/os-release | sed -r 's/.*"(.+)".*/\1/')\"" >> /ALL/Downloads/envvars.sh \ 216 | && echo "export OS_VERSION=\"$(grep -e ^VERSION= /etc/os-release | sed -r 's/.*"(.+)".*/\1/')\"" >> /ALL/Downloads/envvars.sh \ 217 | && echo "export OUR_IMAGE=\"${OUR_IMAGE}\"" >> /ALL/Downloads/envvars.sh \ 218 | && echo "export OUR_IMAGE_SHORT=\"${OUR_IMAGE_SHORT}\"" >> /ALL/Downloads/envvars.sh \ 219 | && echo "export OUR_IMAGE_SLOGAN=\"${OUR_IMAGE_SLOGAN}\"" >> /ALL/Downloads/envvars.sh \ 220 | && echo "export OUR_IMAGE_TAG=\"${OUR_IMAGE_TAG}\"" >> /ALL/Downloads/envvars.sh \ 221 | && echo "export OUR_IMAGE_VERSION=\"${OUR_IMAGE_VERSION}\"" >> /ALL/Downloads/envvars.sh \ 222 | && echo "export PLANTUML_JAR_VERSION=\"${PLANTUML_JAR_VERSION}\"" >> /ALL/Downloads/envvars.sh \ 223 | && echo "export TOOLCHAIN_URL=\"${TOOLCHAIN_URL}\"" >> /ALL/Downloads/envvars.sh \ 224 | \ 225 | && COMMENT "Let\'s have some info ('::' as separator) about the build" \ 226 | && cmd="cat /ALL/venv/pip-frozen-requirements.txt" \ 227 | && echo ${cmd}: \ 228 | && $cmd \ 229 | && echo "\n\ 230 | $OUR_IMAGE_VERSION\n\ 231 | Versions used for $OUR_IMAGE_VERSION:\n\ 232 | Theme :: $THEME_NAME :: $THEME_VERSION :: mtime:$THEME_MTIME\n\ 233 | Toolchain :: RenderDocumentation :: $TOOLCHAIN_VERSION\n\ 234 | Toolchain tool :: TCT :: $TOOLCHAIN_TOOL_VERSION\n\ 235 | TYPO3-Documentation :: typo3.latex :: v1.1.0\n\ 236 | TypoScript lexer :: typoscript.py :: $TYPOSCRIPT_PY_VERSION\n\ 237 | \n\ 238 | DOCKRUN_PREFIX :: ${DOCKRUN_PREFIX}\n\ 239 | OS_NAME :: $(grep -e ^NAME= /etc/os-release | sed -r 's/.*"(.+)".*/\1/')\n\ 240 | OS_VERSION :: $(grep -e ^VERSION= /etc/os-release | sed -r 's/.*"(.+)".*/\1/')\n\ 241 | OUR_IMAGE :: ${OUR_IMAGE}\n\ 242 | OUR_IMAGE_SHORT :: ${OUR_IMAGE_SHORT}\n\ 243 | OUR_IMAGE_SLOGAN :: ${OUR_IMAGE_SLOGAN}\n\ 244 | OUR_IMAGE_TAG :: ${OUR_IMAGE_TAG}\n\ 245 | OUR_IMAGE_VERSION :: ${OUR_IMAGE_VERSION}\n\ 246 | PLANTUML_JAR_VERSION :: ${PLANTUML_JAR_VERSION} :: /usr/share/plantuml/plantuml-${PLANTUML_JAR_VERSION}.jar\n\ 247 | TOOLCHAIN_TOOL_URL :: ${TOOLCHAIN_TOOL_URL}\n\ 248 | TOOLCHAIN_URL :: ${TOOLCHAIN_URL}\n\ 249 | \n" | cut -b 7- > /ALL/Downloads/buildinfo.txt \ 250 | && cat /ALL/Downloads/envvars.sh >> /ALL/Downloads/buildinfo.txt \ 251 | && cat /ALL/Downloads/buildinfo.txt 252 | 253 | ENTRYPOINT ["/ALL/Menu/mainmenu.sh"] 254 | 255 | CMD [] 256 | -------------------------------------------------------------------------------- /Dockerfile.build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | OUR_IMAGE_TAG=${OUR_IMAGE_TAG:-latest} 4 | OUR_IMAGE_SHORT=${OUR_IMAGE_SHORT:-t3rd} 5 | EXITCODE=0 6 | 7 | function usage() { 8 | echo "Dockerfile.build.sh: Build the Docker image." 9 | echo "Usage:" 10 | echo " /bin/bash ./$(basename -- $0)" 11 | echo " /bin/bash ./$(basename -- $0) --help" 12 | echo "" 13 | echo "More examples:" 14 | echo " OUR_IMAGE_TAG=v77.88.99 OUR_IMAGE_SHORT=t3rd /bin/bash ./$(basename -- $0)" 15 | echo " OUR_IMAGE_TAG=latest OUR_IMAGE_SHORT=t3rd /bin/bash ./$(basename -- $0)" 16 | echo " OUR_IMAGE_TAG=develop OUR_IMAGE_SHORT=develop /bin/bash ./$(basename -- $0)" 17 | echo " OUR_IMAGE_TAG=test OUR_IMAGE_SHORT=test /bin/bash ./$(basename -- $0)" 18 | echo " OUR_IMAGE_TAG=test OUR_IMAGE_SHORT=test PLANTUML_JAR_VERSION=1.2023.6 /bin/bash ./$(basename -- $0)" 19 | echo 20 | } 21 | 22 | if [[ "/ $@ /" =~ " --help " ]]; then 23 | usage 24 | exit 0 25 | fi 26 | 27 | if ((1)); then 28 | docker rmi t3docs/render-documentation:${OUR_IMAGE_TAG} 29 | fi 30 | 31 | if ((1)); then 32 | BUILD_START=$(date '+%s') 33 | cmd="docker build" 34 | cmd="$cmd --force-rm=true" 35 | cmd="$cmd --no-cache=true" 36 | cmd="$cmd -f ./Dockerfile" 37 | cmd="$cmd -t t3docs/render-documentation:${OUR_IMAGE_TAG}" 38 | if [[ ! -z "$OUR_IMAGE_SHORT" ]]; then 39 | cmd="$cmd --build-arg OUR_IMAGE_SHORT=\"${OUR_IMAGE_SHORT}\"" 40 | fi 41 | if [[ ! -z "$OUR_IMAGE_TAG" ]]; then 42 | cmd="$cmd --build-arg OUR_IMAGE_TAG=\"${OUR_IMAGE_TAG}\"" 43 | fi 44 | if [[ ! -z "$PLANTUML_JAR_VERSION" ]]; then 45 | cmd="$cmd --build-arg PLANTUML_JAR_VERSION=\"${PLANTUML_JAR_VERSION}\"" 46 | fi 47 | cmd="$cmd ." 48 | echo $cmd 49 | eval "$cmd" 50 | EXITCODE=$? 51 | BUILD_END=$(date '+%s') 52 | BUILD_ELAPSED=$(expr $BUILD_END - $BUILD_START) 53 | 54 | if [ $EXITCODE -eq 0 ]; then 55 | echo Success! 56 | echo "You may now run:" 57 | echo " docker run --rm t3docs/render-documentation:${OUR_IMAGE_TAG}" 58 | echo " eval \"\$(docker run --rm t3docs/render-documentation:${OUR_IMAGE_TAG} show-shell-commands)\"" 59 | else 60 | echo Failed 61 | fi 62 | echo "building t3docs/render-documentation:${OUR_IMAGE_TAG} in $BUILD_ELAPSED seconds" 63 | fi 64 | echo 65 | echo Looking for image 't3docs:render-documentation:'"${OUR_IMAGE_TAG}" 66 | docker image ls | awk '$1=="t3docs/render-documentation" && $2=="'${OUR_IMAGE_TAG}'"' 67 | echo 68 | echo Hint: 69 | echo Consider command \'docker builder prune\' to stop \'/var/lib/docker\' from growing 70 | echo -------------------------------------------------------------------------------- /Documentation/dummy.rst: -------------------------------------------------------------------------------- 1 | 2020-11-12 10:57 2 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .DEFAULT_GOAL := help 2 | 3 | # https://www.gnu.org/software/make/manual/make.html 4 | 5 | 6 | define BROWSER_PYSCRIPT 7 | import os, webbrowser, sys 8 | 9 | from urllib.request import pathname2url 10 | 11 | webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) 12 | endef 13 | export BROWSER_PYSCRIPT 14 | 15 | 16 | define PRINT_HELP_PYSCRIPT 17 | import re, sys 18 | 19 | hits = [] 20 | for line in sys.stdin: 21 | match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) 22 | if match: 23 | target, help = match.groups() 24 | parts = help.split('##', 1) 25 | if len(parts) == 2: 26 | params, help = parts[0].strip(), parts[1].strip() 27 | else: 28 | params, help = "", help.strip() 29 | hits.append([target, params, help]) 30 | if 1: hits.sort() 31 | if hits: 32 | print("Available make targets:\n") 33 | for target, params, help in hits: 34 | if params: 35 | params2 = " " + params 36 | else: 37 | params2 = "" 38 | print("make %-30s %s" % (target + params2, help)) 39 | epilog = (""" 40 | """) 41 | if epilog: 42 | print(epilog) 43 | endef 44 | export PRINT_HELP_PYSCRIPT 45 | 46 | 47 | BROWSER := python -c "$$BROWSER_PYSCRIPT" 48 | 49 | .PHONY: help 50 | help: ## Show this help (default). 51 | @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) 52 | 53 | 54 | .PHONY: build 55 | build: ## Build Docker container. Example: OUR_IMAGE_TAG=local OUR_IMAGE_SHORT=local make build 56 | /bin/bash Dockerfile.build.sh 57 | 58 | 59 | .PHONY: push_to_ghcr 60 | push_to_ghcr: ## [OUR_IMAGE_TAG] ## Example: OUR_IMAGE_TAG=local make push_to_ghcr 61 | docker tag t3docs/render-documentation:$(OUR_IMAGE_TAG) ghcr.io/t3docs/render-documentation:$(OUR_IMAGE_TAG) 62 | docker push ghcr.io/t3docs/render-documentation:$(OUR_IMAGE_TAG) 63 | 64 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ================================ 2 | DRC - Docker Rendering Container 3 | ================================ 4 | 5 | Use this repository and :code:`docker build` to build the TYPO3 official Docker 6 | image :code:`t3docs/render-documentation` for rendering `TYPO3 documentation 7 | `__. You may as well skip building and use ready 8 | made containers from `ghcr.io `__. 9 | 10 | What for? 11 | 12 | TYPO3 uses plain UTF-8 text files with reStructuredText (reST) markup 13 | for documentation. Such documentation is readable by itself to some extend. 14 | However, the `Sphinx documentation tool 15 | `__ is used to produce the final html result. 16 | This DRC bundles everything that's needed for generating the final 17 | documentation. All it takes is a simple command at the command line. 18 | However, having Docker installed is a requirement. 19 | 20 | 21 | Characteristics 22 | =============== 23 | 24 | :Repository: https://github.com/t3docs/docker-render-documentation 25 | :Branches: "main" for image tagged "latest", "develop" for image 26 | tagged "develop" 27 | :Releases: See `Releases `__ 28 | for more tags 29 | :Version: See `VERSION.txt `__ 30 | :Authors: TYPO3 Documentation Team 31 | :Main caretaker: Martin Bless 32 | :License: MIT 33 | 34 | 35 | Installation 36 | ============ 37 | 38 | Docker is required on your machine. You can use Linux-like systems like Mac, Linux, WSL2. 39 | 40 | Windows with Docker installed (no WSL2) is also possible. Important: Use the older 41 | :code:`command line` window and NOT Powershell. 42 | 43 | At the command line:: 44 | 45 | # Fetch the Docker image. "tag" may be "latest (default)", "develop", "dev30" or similar. 46 | docker pull ghcr.io/t3docs/render-documentation[:tag] 47 | 48 | # Attach the canonical tag "t3docs/render-documentation" to the image - without "ghcr.io/"! 49 | docker tag ghcr.io/t3docs/render-documentation[:tag] ghcr.io/t3docs/render-documentation[:tag] 50 | 51 | # verify the image can be run as container 52 | docker run --rm t3docs/render-documentation[:tag] 53 | docker run --rm t3docs/render-documentation[:tag] --help 54 | docker run --rm t3docs/render-documentation[:tag] --version 55 | docker run --rm t3docs/render-documentation[:tag] show-shell-commands 56 | 57 | # on Mac, Linux, WSL2: define helper function `dockrun_t3rd` 58 | eval "$(docker run --rm t3docs/render-documentation[:tag] show-shell-commands)" 59 | 60 | # On Windows (not WSL2) create file 'dockrun_t3rd.bat' 61 | # Make sure the file is somehwere on your PATH. 62 | docker run --rm t3docs/render-documentation[:tag] show-windows-bat > dockrun_t3rd.bat 63 | 64 | 65 | To update to a newer container version just repeat these steps. 66 | 67 | 68 | Usage 69 | ===== 70 | 71 | 1. Open terminal window 72 | 73 | 2. Prepare:: 74 | 75 | # Linux-like systems (Linux, Mac, WSL2) 76 | # Define helper function, if it's not already in your .bashrc or .zshrc 77 | eval "$(docker run --rm t3docs/render-documentation[:tag] show-shell-commands)" 78 | 79 | # for Windows there is nothing to do. However, 'dockrun_t3rd.bat' should 80 | # be on your PATH. 81 | 82 | 3. Verify:: 83 | 84 | # Verify it's working. If it runs, it's ok. 85 | dockrun_t3rd --help 86 | 87 | 4. Render documentation:: 88 | 89 | # Go to the PROJECT = first = root = start (!) folder of your project. 90 | # The actual documentation is expected to be in PROJECT/Documentation 91 | cd PROJECT 92 | 93 | # Run the rendering 94 | dockrun_t3rd makehtml 95 | 96 | 5. Find rendering results in :code:`PROJECT/Documentation-GENERATED-temp` 97 | 98 | 6. Optionally, try these examples:: 99 | 100 | T3DOCS_DEBUG=1 dockrun_t3rd 101 | T3DOCS_DEBUG=1 dockrun_t3rd makehtml 102 | T3DOCS_DEBUG=1 dockrun_t3rd makehtml-no-cache -c make_singlehtml 1 103 | 104 | 105 | Documentation 106 | ============= 107 | 108 | * `The T3DocsRenderingContainer (Draft) 109 | `__ 110 | 111 | * `Release notes and What's new? 112 | `__ 113 | 114 | 115 | Features 116 | ======== 117 | 118 | What markup can you use? 119 | 120 | The DRC bundles the Sphinx tool, Sphinx extensions, a Sphinx TYPO3 theme, a toolchain and some 121 | logic and user interface components. We are using a "stress test" demonstration manual (`GitHub repository 122 | `__) 123 | to test that everything works as expected. 124 | Check the rendering result `Sphinx TYPO3 Theme Rendering Test 125 | `__ 126 | of this repository to find out what markup you can use and how it will look like when rendered. 127 | 128 | 129 | Contributing 130 | ============ 131 | 132 | Contributions are always welcome! Please use 133 | `GitHub issues `__ 134 | or 135 | `GitHub pull requests `__. 136 | 137 | 138 | 139 | 140 | Enjoy! 141 | -------------------------------------------------------------------------------- /VERSION.txt: -------------------------------------------------------------------------------- 1 | v3.2.0 2 | 3 | Keep version number like above in files: 4 | 5 | * First line in this file 6 | * Dockerfile (as OUR_IMAGE_VERSION) 7 | * README.rst 8 | * CHANGES.rst 9 | 10 | Check: 11 | 12 | OUR_IMAGE_TAG 13 | in CI.yml 14 | in Dockerfile 15 | in Dockerfile.build.sh 16 | 17 | OUR_IMAGE_SHORT 18 | in CI.yml 19 | in Dockerfile 20 | in Dockerfile.build.sh 21 | 22 | End of text. 23 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typo3/t3docs-docker-render-documentation", 3 | "type": "typo3-cms-documentation", 4 | "description": "Render TYPO3 Documentation the official way using Docker", 5 | "license": "CC-BY-NC-SA-4.0", 6 | "require": { 7 | "typo3/cms-core": "^9.5" 8 | } 9 | } --------------------------------------------------------------------------------