Атрибуты Asciidoctor-pdf не обнаруживаются с помощью python3 subprocess.run () - PullRequest
0 голосов
/ 25 февраля 2019

в нашем отделе мы переключили формат нашей документации на 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])

1 Ответ

0 голосов
/ 27 февраля 2019

Параметр -a и фактическое значение необходимо разделить в списке, который передается подпроцессу.

for key, value in yaml_content.items():
    print(key, value)
    yaml_variables.append("-a")
    yaml_variables.append(key + "=" + str(value))

До: [-a ui_host=10.10.10.10, -a ui_port=10, ...]

После: [-a, ui_host=10.10.10.10, -a, ui_port=10, ...]

...