в нашем отделе мы переключили формат нашей документации на Asciidoc (tor).В целях автоматизации мы хотим использовать атрибуты / переменные, которые читаются из .yml-файла.
Проблема возникает при попытке обработать этот атрибут.Использование оболочки работает отлично.
asciidoctor-pdf -a ui_host=10.10.10.10 -a ui_port=10 -a ext_host=10.11.11.11 -a ext_port=11 userman_asciidoc.adoc
Анализ variables.yml в сценарии python3, форматирование их и присоединение их как распакованного списка к subprocess.run()
вызов вернет действительный asciidoc-pdf.Однако атрибуты не включены.
Я считаю, что это проблема подпроцесса, и я что-то делаю не так.Итак, как subprocess.run () генерирует точно такой же вывод, как если бы он был записан в командной строке?
variables.yml :
ui_host: 10.10.10.10
ui_port: 10
ext_host: 10.11.11.11
ext_port: 11
asciidoc_build.py :
import yaml
import subprocess
import argparse
parser = argparse.ArgumentParser(description="This Script builds the Asciidoc usermanual for TASTE-OS as a pdf. It can take variables as input, which yould be stored in a .yml file")
parser.add_argument("adoc_file", help="Path to the usermanual as Asciidoc (.adoc) file")
parser.add_argument("yaml_file", help="The path to the yaml file, which contains all needed variables for the TASTE-OS usermanual")
args = parser.parse_args()
with open(args.yaml_file, "r") as f:
try:
yaml_content = yaml.load(f)
except yaml.YAMLError as exc:
print(exc)
yaml_variables = []
for key, value in yaml_content.items():
print(key, value)
yaml_variables.append("-a " + key + "=" + str(value))
subprocess.run(["asciidoctor-pdf", *yaml_variables, args.adoc_file])