for (option, enum_name, requires_parameter) in opts_long: if first: arg_enum.append(" %s = 1000," % (enum_name)) first = False else: arg_enum.append(" %s," % (enum_name)) arg_enum.append("};") arg_enum = "\n".join(arg_enum) + "\n" cmd_def = [" const char *short_options = \"%s\";" % (short_string)] cmd_def.append(" struct option long_options[] = {") for (option, enum_name, requires_parameter) in opts_long: param = "\"%s\"," % (option) if requires_parameter: cmd_def.append(" { %-30s required_argument, 0, %s }," % (param, enum_name)) else: cmd_def.append(" { %-30s no_argument, 0, %s }," % (param, enum_name)) cmd_def.append(" { 0 }") cmd_def.append(" };") cmd_def = "\n".join(cmd_def) + "\n" patcher = Patcher("../pgmopts.c") patcher.patch("help page", help_code) patcher.patch("command definition enum", arg_enum) patcher.patch("command definition", cmd_def) patcher = Patcher("../README.md", filetype="markdown") patcher.patch("help page", markdown_help_page)
import subprocess from Patcher import Patcher def _get_output(cmd): proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) (stdout, stderr) = proc.communicate() stdout = stdout.decode().rstrip("\r\n").lstrip("\r\n") return stdout os.chdir("..") patcher = Patcher("README.md", filetype="markdown") stdout = _get_output(["./x509sak.py"]) text = "\n```\n$ ./x509sak.py\n%s\n```\n" % (stdout) patcher.patch("summary", text) commands = [] command_re = re.compile("Begin of cmd-(?P<cmdname>[a-z]+)") for match in command_re.finditer(patcher.read()): cmdname = match.groupdict()["cmdname"] commands.append(cmdname) for command in commands: stdout = _get_output(["./x509sak.py", command, "--help"]) text = "\n```\n%s\n```\n" % (stdout) patcher.patch("cmd-%s" % (command), text)