feat(package): Add RPM, deb, pacman and tar packages and manpage

Build package using fpm. As I don't want ruby/gem in my computer, the
build system creates an OCI image with Podman (at this time), and
generate dist pacakges.

To enhance the packages, a manpage is now generated from the
documentation.
This commit is contained in:
2025-07-09 14:11:46 +02:00
parent 6cbaa06bec
commit 13d231a62c
7 changed files with 111 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
beautifulsoup4==4.*
mkdocs-manpage[preprocess]

View File

@@ -3,6 +3,16 @@ docs_dir: ./docs
plugins:
- search
- inline-svg
- manpage:
enabled: !ENV [MANPAGE, false]
preprocess: preprocess.py
pages:
- title: Katenary
header: Katenary helm chart generator
output: share/man/man1/katenary.1
inputs:
- usage.md
- labels.md
theme:
name: material
custom_dir: overrides

22
doc/preprocess.py Normal file
View File

@@ -0,0 +1,22 @@
"""Called by mkdocs to preprocess files and build manpages"""
from bs4 import BeautifulSoup, Tag
def to_remove(tag: Tag) -> bool:
"""Removes images, SVGs, links containing images or SVGs, and permalinks from the BeautifulSoup object."""
if tag.name in {"img", "svg"}:
return True
# remove links containing images or SVGs
if tag.name == "a" and tag.img and to_remove(tag.img):
return True
# remove permalinks
if tag.name == "a" and "headerlink" in tag.get("class", ()):
return True
return False
def preprocess(soup: BeautifulSoup, output: str) -> None:
"""Preprocess the BeautifulSoup object to remove unwanted elements."""
for element in soup.find_all(to_remove):
element.decompose()