mirror of
https://github.com/saltstack/salt.git
synced 2025-04-16 01:30:20 +00:00
102 lines
2.6 KiB
Python
102 lines
2.6 KiB
Python
"""
|
|
These commands are used to generate Salt's manpages.
|
|
"""
|
|
# pylint: disable=resource-leakage,broad-except
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import os
|
|
import pathlib
|
|
import shutil
|
|
import sys
|
|
|
|
from ptscripts import Context, command_group
|
|
|
|
import tools.utils
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
# Define the command group
|
|
docs = command_group(
|
|
name="docs",
|
|
help="Manpages tools",
|
|
description=__doc__,
|
|
venv_config={
|
|
"requirements_files": [
|
|
tools.utils.REPO_ROOT
|
|
/ "requirements"
|
|
/ "static"
|
|
/ "ci"
|
|
/ "py{}.{}".format(*sys.version_info)
|
|
/ "docs.txt"
|
|
],
|
|
},
|
|
)
|
|
|
|
|
|
@docs.command(
|
|
name="man",
|
|
arguments={
|
|
"no_clean": {
|
|
"help": "Don't cleanup prior to building",
|
|
}
|
|
},
|
|
)
|
|
def man(ctx: Context, no_clean: bool = False):
|
|
if no_clean is False:
|
|
ctx.run("make", "clean", cwd="doc/", check=True)
|
|
ctx.run("make", "man", "SHPINXOPTS=-W", cwd="doc/", check=True)
|
|
for root, dirs, files in os.walk("doc/_build/man"):
|
|
for file in files:
|
|
shutil.copy(os.path.join(root, file), os.path.join("doc/man", file))
|
|
|
|
|
|
@docs.command(
|
|
name="html",
|
|
arguments={
|
|
"no_clean": {
|
|
"help": "Don't cleanup prior to building",
|
|
},
|
|
"archive": {
|
|
"help": "Compress the generated documentation into the provided archive.",
|
|
},
|
|
},
|
|
)
|
|
def html(ctx: Context, no_clean: bool = False, archive: pathlib.Path = None):
|
|
if no_clean is False:
|
|
ctx.run("make", "clean", cwd="doc/", check=True)
|
|
ctx.run("make", "html", "SHPINXOPTS=-W", cwd="doc/", check=True)
|
|
if archive is not None:
|
|
ctx.info(f"Compressing the generated documentation to '{archive}'...")
|
|
ctx.run("tar", "caf", str(archive.resolve()), ".", cwd="doc/_build/html")
|
|
|
|
|
|
@docs.command(
|
|
name="epub",
|
|
arguments={
|
|
"no_clean": {
|
|
"help": "Don't cleanup prior to building",
|
|
}
|
|
},
|
|
)
|
|
def epub(ctx: Context, no_clean: bool = False):
|
|
if no_clean is False:
|
|
ctx.run("make", "clean", cwd="doc/", check=True)
|
|
ctx.run("make", "epub", "SHPINXOPTS=-W", cwd="doc/", check=True)
|
|
|
|
|
|
@docs.command(
|
|
name="pdf",
|
|
arguments={
|
|
"no_clean": {
|
|
"help": "Don't cleanup prior to building",
|
|
}
|
|
},
|
|
)
|
|
def pdf(ctx: Context, no_clean: bool = False):
|
|
if not shutil.which("inkscape"):
|
|
ctx.warn("No inkscape binary found")
|
|
ctx.exit(1)
|
|
if no_clean is False:
|
|
ctx.run("make", "clean", cwd="doc/", check=True)
|
|
ctx.run("make", "pdf", "SHPINXOPTS=-W", cwd="doc/", check=True)
|