doc_infra/parsers/base.py

59 lines
1.8 KiB
Python
Raw Normal View History

#!/bin/env python3
import sys
from os import listdir
from os.path import isfile, join
2025-02-27 11:40:56 +01:00
from json import loads
from debian import parse_debian
from freebsd import parse_freebsd
from freebox import parse_freebox
2025-02-14 21:11:21 +01:00
from jinja2 import Environment, FileSystemLoader
def find_os(content):
version = content.split("###### VERSION ######")[-1]
2025-02-27 11:40:56 +01:00
jcontent = {}
try:
jcontent = loads(version)
except:
osystem = [line.split("=")[-1] for line in version.splitlines() if line.startswith("ID=")]
if osystem:
return osystem[0]
if "ID" in jcontent:
return jcontent["ID"]
return "freebox"
def main():
mypath = "../oxidized/"
onlyfiles = [mypath + f for f in listdir(mypath) if isfile(join(mypath, f))]
2025-02-14 21:11:21 +01:00
env = Environment(loader = FileSystemLoader('../template'))
for file in onlyfiles:
2025-02-27 15:20:16 +01:00
print("opening {} file ...".format(file.split("/")[-1]))
with open(file,"r") as f:
content = f.read()
current_os = find_os(content)
if "freebsd" in current_os:
2025-02-14 21:11:21 +01:00
infos = parse_freebsd(content)
2025-02-28 10:34:41 +01:00
infos["extend_exists"] = False
2025-02-14 21:11:21 +01:00
template = env.get_template('freebsd.rst.j2')
elif "debian" in current_os:
2025-02-14 21:11:21 +01:00
infos = parse_debian(content)
2025-02-28 10:34:41 +01:00
infos["extend_exists"] = False
2025-02-14 21:11:21 +01:00
template = env.get_template('debian.rst.j2')
else:
2025-02-28 10:34:41 +01:00
infos = parse_freebox(content)
infos = {
"hostname":"Freebox",
"os":{"NAME":"FreeboxOS","VERSION":"None"},
}
infos["extend_exists"] = False
2025-03-09 14:21:38 +01:00
print("Generating final rst")
2025-02-28 10:34:41 +01:00
output = template.render(**infos)
2025-02-14 21:11:21 +01:00
with open("../source/devices/{host}.rst".format(host=infos["hostname"].replace("\n","")), "w") as f:
f.write(output)
if __name__ == "__main__":
main()