Ever wanted KiCanvas locally on your own gitea install? :)
cd <path/to/your/gitea/data>
mkdir -p data/gitea/public/assets data/gitea/templates/custom data/gitea/scripts
wget -O data/gitea/public/assets/kicanvas.js https://kicanvas.org/kicanvas/kicanvas.jsdata/gitea/templates/custom/header.tmpl:
<script type="module" src="{{AppSubUrl}}/assets/kicanvas.js"></script>data/gitea/scripts/render-kicanvas.sh reads the file content and inlines it
into a <kicanvas-source>
#!/bin/sh
FILE="$1"
if head -c 50 "$FILE" | grep -q "kicad_pcb"; then
TYPE="board"
else
TYPE="schematic"
fi
printf "<kicanvas-embed controls=\"full\">\n<kicanvas-source type=\"%s\">\n" "$TYPE"
sed -e "s/&/\\&/g" -e "s/</\\</g" -e "s/>/\\>/g" "$FILE"
printf "</kicanvas-source>\n</kicanvas-embed>\n"chown git:git data/gitea/scripts/render-kicanvas.sh
chmod +x data/gitea/scripts/render-kicanvas.shImportant: everything under data/gitea/{scripts,public,templates} must be
owned by git:git
Append to data/gitea/conf/app.ini:
[markup.kicad]
ENABLED = true
FILE_EXTENSIONS = .kicad_sch, .kicad_pcb
RENDER_COMMAND = "/data/gitea/scripts/render-kicanvas.sh"
IS_INPUT_FILE = true
[markup.sanitizer.kicad.1]
ELEMENT = kicanvas-embed
ALLOW_ATTR = controls
[markup.sanitizer.kicad.2]
ELEMENT = kicanvas-embed
ALLOW_ATTR = controlslist
[markup.sanitizer.kicad.3]
ELEMENT = kicanvas-embed
ALLOW_ATTR = id
[markup.sanitizer.kicad.4]
ELEMENT = kicanvas-source
ALLOW_ATTR = typedocker compose restart gitea