Skip to content

Commit

Permalink
Merge pull request #4 from robocup-junior/main
Browse files Browse the repository at this point in the history
Pull windows build script from main to 2024-draft branch
  • Loading branch information
ChristianH99 authored Dec 17, 2023
2 parents cd35f6d + 6dd4416 commit 3dac344
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 0 deletions.
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
## Building the PDF rules on your own

The rules are written in a format called `asciidoc`. It is very similar to
Markdown but unlike Markdown, it is very extensible and has a nice ecosystems
of tools around it. To get a feel for what it looks like, please take a look at
the [AsciiDoc Writer's Guide](https://asciidoctor.org/docs/asciidoc-writers-guide/).

Despite how great it is, the rules cannot be built with AsciiDoc alone. They
need to be exported into PDF, in a specific format, and we'd also like them to
highlight the changes in a nice way and automatically generate IDs for each
paragraph. To do all this, the input AsciiDoc file goes thorugh the following
steps:

1. `AsciiDoc` -> `CriticMarked AsciiDoc` (_to visualize rule changes in red_)
2. `CriticMarked AsciiDoc` -> **HTML**
3. `CriticMarked AsciiDoc` -> `LaTeX` (for formatting purposes)
4. `LaTeX` -> `LaTeX + RCJ Soccer formatting` (_to ensure uniformity of the output_)
5. `LaTeX + RCJ Soccer formatting` -> **PDF**

At the end of this process we end up with a **HTML** and a **PDF** version of
the AsciiDoc file we started with.

This repository is connected to so called [Travis CI](http://travis-ci.org/)
which allows us to automatically build the rules whenever any change/update
takes place.

If you'd like to build the rules on your own computer you have to follow the instructions below.

### Linux or MacOS System

1. Install [Docker](https://docker.com) with the instructions on the website.
2. Open a console and run the following commands
3. `docker run -v $(pwd):/documents asciidoctor/docker-asciidoctor .ci/adoc-to-tex.sh rules`
4. `docker run -v $(pwd):/documents mrshu/texlive-dblatex .ci/tex-to-pdf.sh rules`

These commands will make the `rules.adoc` file (in the current working directory --
that's the `$(pwd)` part) go through the build steps above and generate the files
`rules.html` and `rules.pdf` as a result.

### Windows System

When running on Windows you initially have to do a few extra extra steps to be able to build
the rules using the Linux scripts with the windows subsystem for Linux.

1. Install the [Windows subsystem for linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install)
2. Open the WSL (search for WSL in the Windows search bar) and create username and passwort
5. Install [Docker](https://docker.com) with the instructions on the website if not done yet
6. Run the [build_rules_on_windows script](https://github.com/robocup-junior/onstage-rules/blob/main/build_rules_on_windows.bat) to build the rules

You can now find the PDF and HTML version of the rules in the rules_documents folder.
43 changes: 43 additions & 0 deletions build_rules_on_windows.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
@echo off

REM Set the path to the Git repository dynamically
set REPO_PATH=%CD%

REM Convert backslashes to forward slashes in WSL paths
set REPO_PATH=%REPO_PATH:\=/%

REM Replace C: with /mnt/c/
set REPO_PATH=%REPO_PATH:C:=/mnt/c%

echo Running commands in WSL...

REM Check if dos2unix is installed in WSL
wsl dos2unix --version >nul 2>&1
if %errorlevel% neq 0 (
echo Installing dos2unix...
REM Add installation command for dos2unix here
wsl sudo apt-get update
wsl sudo apt-get install dos2unix
)

REM Create temporary copies of .sh scripts with Linux-style line endings using wsl cp (because Github checkout might automatically change them to Windows style which will stop the scripts from working)
wsl cp %REPO_PATH%/.ci/adoc-to-tex.sh %REPO_PATH%/.ci/adoc-to-tex-temp.sh
wsl cp %REPO_PATH%/.ci/tex-to-pdf.sh %REPO_PATH%/.ci/tex-to-pdf-temp.sh

REM Convert line endings to LF (Linux-style)
wsl dos2unix %REPO_PATH%/.ci/adoc-to-tex-temp.sh
wsl dos2unix %REPO_PATH%/.ci/tex-to-pdf-temp.sh

REM Run commands in WSL with sudo for Docker
@echo Building rules
wsl sudo docker run -v %REPO_PATH%:/documents asciidoctor/docker-asciidoctor .ci/adoc-to-tex-temp.sh onstage_rules
wsl sudo docker run -v %REPO_PATH%:/documents mrshu/texlive-dblatex .ci/tex-to-pdf-temp.sh onstage_rules

REM Clean up temporary files
wsl rm %REPO_PATH%/.ci/adoc-to-tex-temp.sh
wsl rm %REPO_PATH%/.ci/tex-to-pdf-temp.sh

echo WSL commands completed.

REM Pause the script and wait for any key to be pressed
pause

0 comments on commit 3dac344

Please sign in to comment.