mirror of
https://gitlab.com/lvra/lvra.gitlab.io.git
synced 2024-12-25 15:20:26 +01:00
Merge branch 'link-check' into 'main'
Check links in CI with htmlcheck See merge request lvra/lvra.gitlab.io!38
This commit is contained in:
commit
83fbc8c3d1
10 changed files with 55 additions and 59 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -7,3 +7,6 @@ node_modules/
|
||||||
public/
|
public/
|
||||||
resources/
|
resources/
|
||||||
.deploy*/
|
.deploy*/
|
||||||
|
|
||||||
|
# htmltest
|
||||||
|
tmp/
|
|
@ -1,28 +1,43 @@
|
||||||
variables:
|
variables:
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
|
|
||||||
test-links:
|
## GitLab defaults to:
|
||||||
image: python:latest
|
# stages:
|
||||||
script:
|
# - build
|
||||||
- python3 ./test_links.py
|
# - test
|
||||||
|
# - deploy
|
||||||
|
|
||||||
test-trailing-spaces:
|
build-site:
|
||||||
script:
|
stage: build
|
||||||
- ./test_trailing_spaces.sh
|
|
||||||
|
|
||||||
test-build:
|
|
||||||
image: registry.gitlab.com/pages/hugo/hugo_extended
|
|
||||||
script:
|
|
||||||
- hugo
|
|
||||||
except:
|
|
||||||
- main
|
|
||||||
|
|
||||||
pages:
|
|
||||||
image: registry.gitlab.com/pages/hugo/hugo_extended
|
image: registry.gitlab.com/pages/hugo/hugo_extended
|
||||||
script:
|
script:
|
||||||
- hugo
|
- hugo
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
|
||||||
|
test-html:
|
||||||
|
stage: test
|
||||||
|
image:
|
||||||
|
name: wjdp/htmltest:latest
|
||||||
|
entrypoint: [""]
|
||||||
|
cache:
|
||||||
|
key: htmltest-cache
|
||||||
|
paths:
|
||||||
|
- tmp/
|
||||||
|
script:
|
||||||
|
- htmltest
|
||||||
|
|
||||||
|
test-trailing-spaces:
|
||||||
|
stage: test
|
||||||
|
needs: [] # ok to run before build-site
|
||||||
|
script:
|
||||||
|
- ./test_trailing_spaces.sh
|
||||||
|
|
||||||
|
# The GitLab Pages job must always be named "pages", and result in a "public" artifact.
|
||||||
|
# Our "public" artifact is created above, but GitLab jobs will fetch all artifacts from previous stages.
|
||||||
|
pages:
|
||||||
|
stage: deploy
|
||||||
|
script: ls -ld public
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
|
|
11
.htmltest.yml
Normal file
11
.htmltest.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# https://github.com/wjdp/htmltest?tab=readme-ov-file#wrench-configuration
|
||||||
|
|
||||||
|
DirectoryPath: "public"
|
||||||
|
EnforceHTTPS: true
|
||||||
|
IgnoreURLs:
|
||||||
|
# - "example.com"
|
||||||
|
# - "^/misc/js/script.js$"
|
||||||
|
- "https://gitlab.com/lvra/lvra.gitlab.io/-/edit"
|
||||||
|
# IgnoreDirs:
|
||||||
|
# - "lib"
|
||||||
|
CacheExpires: "6h"
|
|
@ -5,7 +5,7 @@ title: OpenSUSE Tumbleweed
|
||||||
# OpenSUSE Tumbleweed
|
# OpenSUSE Tumbleweed
|
||||||
|
|
||||||
**Packages:**
|
**Packages:**
|
||||||
- The OpenXR SDK package can be found in the [hardware:xr](https://build.opensuse.org/package/show/hardware:xr/OpenXR-SDK) [Open Build service](https://en.opensuse.org/openSUSE:Build_Service_FAQ) project. To build [Envision](../fossvr/envision) profiles, the devel package will also have to be installed.
|
- The OpenXR SDK package can be found in the [hardware:xr](https://build.opensuse.org/package/show/hardware:xr/OpenXR-SDK) [Open Build service](https://en.opensuse.org/openSUSE:Build_Service_FAQ) project. To build [Envision](/docs/fossvr/envision/) profiles, the devel package will also have to be installed.
|
||||||
- The set of [Monado Vulkan Layers](../hardware) is provided by a [community package](https://build.opensuse.org/package/show/home:Etch-9:xr/monado-vulkan-layers-git).
|
- The set of [Monado Vulkan Layers](/docs/hardware/) is provided by a [community package](https://build.opensuse.org/package/show/home:Etch-9:xr/monado-vulkan-layers-git).
|
||||||
|
|
||||||
Any other package in hardware:xr is really outdated and should not be used. Additional information on third-party repositories can be found here: [Additional package repositories (opensuse.org)](https://en.opensuse.org/Additional_package_repositories)
|
Any other package in hardware:xr is really outdated and should not be used. Additional information on third-party repositories can be found here: [Additional package repositories (opensuse.org)](https://en.opensuse.org/Additional_package_repositories)
|
|
@ -28,7 +28,7 @@ SteamVR works like it does on other distros for the most part. Unfotrunately, if
|
||||||
[setcap doesn't work](https://github.com/NixOS/nixpkgs/issues/42117#issuecomment-996731579) but can be done manually.
|
[setcap doesn't work](https://github.com/NixOS/nixpkgs/issues/42117#issuecomment-996731579) but can be done manually.
|
||||||
|
|
||||||
## Envision
|
## Envision
|
||||||
[Envision](../../fossvr/envision) has been packaged in [nixos unstable](https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=+envision) but is still in early development and is not recommended. It may also mess with your `monado.service` setup in unexpected ways.
|
[Envision](../../fossvr/envision/) has been packaged in [nixos unstable](https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=+envision) but is still in early development and is not recommended. It may also mess with your `monado.service` setup in unexpected ways.
|
||||||
|
|
||||||
## Community Overlays
|
## Community Overlays
|
||||||
[Nixpkgs-xr](https://github.com/nix-community/nixpkgs-xr) provides overlays for the exisiting nixpkgs. If the mainline packages are broken for you (whether it be compiling or in function) for any reason, adding this, as described in the readme, might help.
|
[Nixpkgs-xr](https://github.com/nix-community/nixpkgs-xr) provides overlays for the exisiting nixpkgs. If the mainline packages are broken for you (whether it be compiling or in function) for any reason, adding this, as described in the readme, might help.
|
|
@ -12,4 +12,4 @@ title: LÖVR
|
||||||
|
|
||||||
The LÖVR engine is a Lua XR engine, written in C, which supports overlays on monado. Very simple and fun to implement whatever you would like.
|
The LÖVR engine is a Lua XR engine, written in C, which supports overlays on monado. Very simple and fun to implement whatever you would like.
|
||||||
|
|
||||||
- [lovr-playspace](/docs/fossvr/lovr/lovr-playspace) A barebones room boundary built on the LÖVR engine.
|
- [lovr-playspace](/docs/fossvr/lovr/lovr-playspace/) A barebones room boundary built on the LÖVR engine.
|
|
@ -5,7 +5,7 @@ title: SteamVR
|
||||||
|
|
||||||
# SteamVR
|
# SteamVR
|
||||||
|
|
||||||
- [Quick start guide](/docs/steamvr/quick-start)
|
- [Quick start guide](/docs/steamvr/quick-start/)
|
||||||
|
|
||||||
The de facto standard for anything PCVR, SteamVR runs on Linux.
|
The de facto standard for anything PCVR, SteamVR runs on Linux.
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,9 @@ If you utilize pipewire as your audio server, VRChat has a tendancy to drop mult
|
||||||
|
|
||||||
Similar tuning of pulseaudio can fix the issue if encountered there.
|
Similar tuning of pulseaudio can fix the issue if encountered there.
|
||||||
|
|
||||||
Should the game prompt to exit the game upon an anticheat failure, simply try to load the game again until it works. [See EAC section](eac)
|
Should the game prompt to exit the game upon an anticheat failure, simply try to load the game again until it works. [See EAC section](eac/)
|
||||||
|
|
||||||
Given a [few caveats](video_players) most video players will work.
|
Given a [few caveats](video_players/) most video players will work.
|
||||||
|
|
||||||
VRChat drags quite a tangle of privacy concerns.
|
VRChat drags quite a tangle of privacy concerns.
|
||||||
Please consider your opsec in relation to all VR API input including poses, all voice communication, unsandboxed code execution, the EAC anticheat system which occasionally probes system proc info and much more, and the game maintaining a memory buffered audio video recording of the window contents tied to the report system.
|
Please consider your opsec in relation to all VR API input including poses, all voice communication, unsandboxed code execution, the EAC anticheat system which occasionally probes system proc info and much more, and the game maintaining a memory buffered audio video recording of the window contents tied to the report system.
|
|
@ -1,7 +1,7 @@
|
||||||
<hr style="margin: 48px 0">
|
<hr style="margin: 48px 0">
|
||||||
<p>
|
<p>
|
||||||
© <a target="_blank" href="https://gitlab.com/LVRA/lvra.gitlab.io/-/project_members">The <em>Linux VR Adventures</em> community contributors</a> —
|
© <a target="_blank" href="https://gitlab.com/LVRA/lvra.gitlab.io/-/project_members">The <em>Linux VR Adventures</em> community contributors</a> —
|
||||||
This work is licensed under <a target="_blank" href="http://creativecommons.org/licenses/by-sa/4.0/">Attribution-ShareAlike 4.0 International</a>.
|
This work is licensed under <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">Attribution-ShareAlike 4.0 International</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Made with <a target="_blank" href="https://gohugo.io/">Hugo</a> and the <a target="_blank" href="https://github.com/alex-shpak/hugo-book">Hugo Book Theme</a>.
|
<p>Made with <a target="_blank" href="https://gohugo.io/">Hugo</a> and the <a target="_blank" href="https://github.com/alex-shpak/hugo-book">Hugo Book Theme</a>.
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
from pathlib import Path
|
|
||||||
import re
|
|
||||||
from typing import List
|
|
||||||
from os.path import exists
|
|
||||||
|
|
||||||
|
|
||||||
def get_all_markdown_files():
|
|
||||||
return Path("content").rglob("*.md")
|
|
||||||
|
|
||||||
|
|
||||||
def find_links(f: str) -> List[str]:
|
|
||||||
with open(f, "r") as fd:
|
|
||||||
content = fd.read()
|
|
||||||
return [
|
|
||||||
link.lstrip("]").strip("()") for link in re.findall(r"\]\(\/[\w\/]+\)", content)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def verify_link_exists(link: str) -> bool:
|
|
||||||
return exists(f"content{link}/_index.md") or exists(f'content{link.rstrip("/")}.md')
|
|
||||||
|
|
||||||
|
|
||||||
md_files = get_all_markdown_files()
|
|
||||||
|
|
||||||
res = 0
|
|
||||||
for f in md_files:
|
|
||||||
for link in find_links(f):
|
|
||||||
if not verify_link_exists(link):
|
|
||||||
print(f"E: {f}: {link} does not exist")
|
|
||||||
res = 1
|
|
||||||
|
|
||||||
exit(res)
|
|
Loading…
Reference in a new issue