diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f2b098b..9637c77d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,7 +178,7 @@ jobs: run: ctest --test-dir build --build-config ${{ env.CMAKE_CONFIG }} --output-on-failure --parallel - name: Install packages for building docs (Linux) - working-directory: cpp/docs + working-directory: docs run: | sudo apt-get update sudo apt-get install -y --no-upgrade doxygen @@ -187,7 +187,7 @@ jobs: if: runner.os == 'Linux' - name: Install packages for building docs (Windows) - working-directory: cpp/docs + working-directory: docs run: | curl -sSfLO https://github.com/doxygen/doxygen/releases/download/Release_1_13_2/doxygen-1.13.2.windows.x64.bin.zip Expand-Archive doxygen-1.13.2.windows.x64.bin.zip @@ -199,8 +199,8 @@ jobs: if: runner.os == 'Windows' - name: Build docs - working-directory: cpp/docs - run: uv run -- sphinx-build -b html . ../build/docs/html + working-directory: docs + run: uv run -- sphinx-build -b html . build/html - name: Package the C++ wrapper working-directory: cpp/build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 94b6c933..f27a2746 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -87,7 +87,7 @@ jobs: python-version: '3.13' - name: Install packages for building docs - working-directory: cpp/docs + working-directory: docs run: | curl -sSfLO https://github.com/doxygen/doxygen/releases/download/Release_1_13_2/doxygen-1.13.2.windows.x64.bin.zip Expand-Archive doxygen-1.13.2.windows.x64.bin.zip @@ -98,8 +98,8 @@ jobs: uv sync - name: Build docs - working-directory: cpp - run: uv run -- sphinx-build -b html . ../build/docs/html + working-directory: docs + run: uv run -- sphinx-build -b html . build/html - name: Build archive id: build-archive diff --git a/.gitignore b/.gitignore index 1ca09fe6..c14a209c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target /testing-plugins +.venv/ +build/ diff --git a/README.md b/README.md index 38fae966..2dbb6442 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,10 @@ cargo test ### API documentation -The API documentation can be built and viewed using: +The Rust API's reference documentation can be built and viewed using: ``` cargo doc --open ``` -The C++ wrapper also has more general documentation. +The `docs` directory contains more general documentation. diff --git a/cpp/.gitignore b/cpp/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/cpp/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 3bf3f58f..704e58ff 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -271,7 +271,7 @@ install(DIRECTORY "${CMAKE_SOURCE_DIR}/include/" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) if(LIBLOOT_INSTALL_DOCS) - install(DIRECTORY "${CMAKE_BINARY_DIR}/docs/html/" + install(DIRECTORY "${CMAKE_SOURCE_DIR}/../docs/build/html/" DESTINATION ${CMAKE_INSTALL_DOCDIR}) endif() diff --git a/cpp/docs/api/Doxyfile b/cpp/Doxyfile similarity index 100% rename from cpp/docs/api/Doxyfile rename to cpp/Doxyfile diff --git a/cpp/README.md b/cpp/README.md index 49aae277..efe11083 100644 --- a/cpp/README.md +++ b/cpp/README.md @@ -66,12 +66,10 @@ ctest --test-dir build --output-on-failure --parallel -V Install [Doxygen](https://www.doxygen.nl/), Python and [uv](https://docs.astral.sh/uv/getting-started/installation/) and make sure they're accessible from your `PATH`, then run: ``` -cd docs -uv run -- sphinx-build -b html . ../build/docs/html +cd ../docs +uv run -- sphinx-build -b html . build/html ``` -The documentation files for dependency licenses and copyright notices are auto-generated using [cargo-attribution](https://github.com/ameknite/cargo-attribution): to regenerate them run `py scripts/licenses.py`. - ### Packaging To package the build: diff --git a/cpp/docs/.python-version b/docs/.python-version similarity index 100% rename from cpp/docs/.python-version rename to docs/.python-version diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..f209589e --- /dev/null +++ b/docs/README.md @@ -0,0 +1,12 @@ +# libloot Documentation + +This directory contains documentation for libloot and LOOT's metadata syntax. It does not include Rust API reference documentation: that is generated using `cargo doc`. + +To build the documentation, install [Doxygen](https://www.doxygen.nl/), Python and [uv](https://docs.astral.sh/uv/getting-started/installation/) and make sure they're accessible from your `PATH`, then run: + +``` +cd ../docs +uv run -- sphinx-build -b html . build/html +``` + +The documentation files for dependency licenses and copyright notices are auto-generated using [cargo-attribution](https://github.com/ameknite/cargo-attribution): to regenerate them run `py scripts/licenses.py`. The script is hardcoded to generate files for the C++ wrapper's dependencies, but in practice that doesn't add any content over doing the same for just the core libloot Rust library. diff --git a/cpp/docs/api/changelog.rst b/docs/api/changelog.rst similarity index 100% rename from cpp/docs/api/changelog.rst rename to docs/api/changelog.rst diff --git a/cpp/docs/api/introduction.rst b/docs/api/introduction.rst similarity index 100% rename from cpp/docs/api/introduction.rst rename to docs/api/introduction.rst diff --git a/cpp/docs/api/licenses/Apache-2.0 b/docs/api/licenses/Apache-2.0 similarity index 100% rename from cpp/docs/api/licenses/Apache-2.0 rename to docs/api/licenses/Apache-2.0 diff --git a/cpp/docs/api/licenses/BSD-3-Clause b/docs/api/licenses/BSD-3-Clause similarity index 100% rename from cpp/docs/api/licenses/BSD-3-Clause rename to docs/api/licenses/BSD-3-Clause diff --git a/cpp/docs/api/licenses/GFDL-1.3-no-invariants-or-later b/docs/api/licenses/GFDL-1.3-no-invariants-or-later similarity index 100% rename from cpp/docs/api/licenses/GFDL-1.3-no-invariants-or-later rename to docs/api/licenses/GFDL-1.3-no-invariants-or-later diff --git a/cpp/docs/api/licenses/GPL-3.0-or-later b/docs/api/licenses/GPL-3.0-or-later similarity index 100% rename from cpp/docs/api/licenses/GPL-3.0-or-later rename to docs/api/licenses/GPL-3.0-or-later diff --git a/cpp/docs/api/licenses/MIT b/docs/api/licenses/MIT similarity index 100% rename from cpp/docs/api/licenses/MIT rename to docs/api/licenses/MIT diff --git a/cpp/docs/api/licenses/Unicode-3.0 b/docs/api/licenses/Unicode-3.0 similarity index 100% rename from cpp/docs/api/licenses/Unicode-3.0 rename to docs/api/licenses/Unicode-3.0 diff --git a/cpp/docs/api/licenses/dependency-notices.rst b/docs/api/licenses/dependency-notices.rst similarity index 100% rename from cpp/docs/api/licenses/dependency-notices.rst rename to docs/api/licenses/dependency-notices.rst diff --git a/cpp/docs/api/licenses/index.rst b/docs/api/licenses/index.rst similarity index 100% rename from cpp/docs/api/licenses/index.rst rename to docs/api/licenses/index.rst diff --git a/cpp/docs/api/licenses/libloot-notices.rst b/docs/api/licenses/libloot-notices.rst similarity index 100% rename from cpp/docs/api/licenses/libloot-notices.rst rename to docs/api/licenses/libloot-notices.rst diff --git a/cpp/docs/api/licenses/texts.rst b/docs/api/licenses/texts.rst similarity index 100% rename from cpp/docs/api/licenses/texts.rst rename to docs/api/licenses/texts.rst diff --git a/cpp/docs/api/reference.rst b/docs/api/reference.rst similarity index 100% rename from cpp/docs/api/reference.rst rename to docs/api/reference.rst diff --git a/cpp/docs/api/sorting.rst b/docs/api/sorting.rst similarity index 100% rename from cpp/docs/api/sorting.rst rename to docs/api/sorting.rst diff --git a/cpp/docs/conf.py b/docs/conf.py similarity index 97% rename from cpp/docs/conf.py rename to docs/conf.py index 00c0e554..ef4a77fd 100644 --- a/cpp/docs/conf.py +++ b/docs/conf.py @@ -22,11 +22,11 @@ import subprocess, os -output_directory = os.path.join('..', 'build', 'docs') -if not os.path.exists(output_directory): - os.makedirs(output_directory) +doxygen_output_directory = os.path.join('..', 'cpp', 'build', 'docs') +if not os.path.exists(doxygen_output_directory): + os.makedirs(doxygen_output_directory) -subprocess.call(['doxygen', 'docs/api/Doxyfile'], cwd='..') +subprocess.call(['doxygen', 'Doxyfile'], cwd='../cpp') # -- General configuration ------------------------------------------------ @@ -350,7 +350,7 @@ texinfo_documents = [ breathe_projects = { -"loot":"../build/docs/xml/", + 'loot':'../cpp/build/docs/xml/', } breathe_default_project = 'loot' diff --git a/cpp/docs/index.rst b/docs/index.rst similarity index 100% rename from cpp/docs/index.rst rename to docs/index.rst diff --git a/cpp/docs/metadata/changelog.rst b/docs/metadata/changelog.rst similarity index 100% rename from cpp/docs/metadata/changelog.rst rename to docs/metadata/changelog.rst diff --git a/cpp/docs/metadata/conditions.rst b/docs/metadata/conditions.rst similarity index 100% rename from cpp/docs/metadata/conditions.rst rename to docs/metadata/conditions.rst diff --git a/cpp/docs/metadata/data_structures/cleaning.rst b/docs/metadata/data_structures/cleaning.rst similarity index 100% rename from cpp/docs/metadata/data_structures/cleaning.rst rename to docs/metadata/data_structures/cleaning.rst diff --git a/cpp/docs/metadata/data_structures/file.rst b/docs/metadata/data_structures/file.rst similarity index 100% rename from cpp/docs/metadata/data_structures/file.rst rename to docs/metadata/data_structures/file.rst diff --git a/cpp/docs/metadata/data_structures/group.rst b/docs/metadata/data_structures/group.rst similarity index 100% rename from cpp/docs/metadata/data_structures/group.rst rename to docs/metadata/data_structures/group.rst diff --git a/cpp/docs/metadata/data_structures/index.rst b/docs/metadata/data_structures/index.rst similarity index 100% rename from cpp/docs/metadata/data_structures/index.rst rename to docs/metadata/data_structures/index.rst diff --git a/cpp/docs/metadata/data_structures/localised_content.rst b/docs/metadata/data_structures/localised_content.rst similarity index 100% rename from cpp/docs/metadata/data_structures/localised_content.rst rename to docs/metadata/data_structures/localised_content.rst diff --git a/cpp/docs/metadata/data_structures/location.rst b/docs/metadata/data_structures/location.rst similarity index 100% rename from cpp/docs/metadata/data_structures/location.rst rename to docs/metadata/data_structures/location.rst diff --git a/cpp/docs/metadata/data_structures/message.rst b/docs/metadata/data_structures/message.rst similarity index 100% rename from cpp/docs/metadata/data_structures/message.rst rename to docs/metadata/data_structures/message.rst diff --git a/cpp/docs/metadata/data_structures/plugin.rst b/docs/metadata/data_structures/plugin.rst similarity index 100% rename from cpp/docs/metadata/data_structures/plugin.rst rename to docs/metadata/data_structures/plugin.rst diff --git a/cpp/docs/metadata/data_structures/tag.rst b/docs/metadata/data_structures/tag.rst similarity index 100% rename from cpp/docs/metadata/data_structures/tag.rst rename to docs/metadata/data_structures/tag.rst diff --git a/cpp/docs/metadata/file_structure.rst b/docs/metadata/file_structure.rst similarity index 100% rename from cpp/docs/metadata/file_structure.rst rename to docs/metadata/file_structure.rst diff --git a/cpp/docs/metadata/introduction.rst b/docs/metadata/introduction.rst similarity index 100% rename from cpp/docs/metadata/introduction.rst rename to docs/metadata/introduction.rst diff --git a/cpp/docs/pyproject.toml b/docs/pyproject.toml similarity index 100% rename from cpp/docs/pyproject.toml rename to docs/pyproject.toml diff --git a/cpp/scripts/licenses.py b/docs/scripts/licenses.py similarity index 98% rename from cpp/scripts/licenses.py rename to docs/scripts/licenses.py index 3c1b64e5..35c247d4 100644 --- a/cpp/scripts/licenses.py +++ b/docs/scripts/licenses.py @@ -78,9 +78,9 @@ def get_target_dependency_names(target_package_name): if __name__ == "__main__": target_package_name = 'libloot-cpp' - cargo_toml_path = 'Cargo.toml' + cargo_toml_path = '../cpp/Cargo.toml' attribution_dir = 'build/attribution' - output_dir = 'docs/licenses' + output_dir = 'api/licenses' subprocess.run( [ diff --git a/cpp/docs/uv.lock b/docs/uv.lock similarity index 100% rename from cpp/docs/uv.lock rename to docs/uv.lock