From c39d797cce9d4feeee9f0a229de1051c66978d4b Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 3 May 2016 10:25:18 +0100 Subject: [PATCH] Dump-swagger: take output file name rather than output dir Make the argument to dump-swagger.py be the name of the output file rather than the output dir, and give it a sensible default. Also, use the absolute path to the output file, so that the output path is relative to the user's cwd rather than the templating dir. --- .gitignore | 1 + scripts/dump-swagger.py | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index eb8e8808..71648500 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ scripts/gen scripts/continuserv/continuserv scripts/speculator/speculator +/scripts/swagger templating/out *.pyc *.swp diff --git a/scripts/dump-swagger.py b/scripts/dump-swagger.py index 71acd052..f826cadc 100755 --- a/scripts/dump-swagger.py +++ b/scripts/dump-swagger.py @@ -7,22 +7,27 @@ import errno import json +import logging import os.path import re import shutil import sys -templating_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "templating") +scripts_dir = os.path.dirname(os.path.abspath(__file__)) +templating_dir = os.path.join(os.path.dirname(scripts_dir), "templating") sys.path.insert(0, templating_dir) -os.chdir(templating_dir) from matrix_templates.units import resolve_references, MatrixUnits -if len(sys.argv) < 2 or len(sys.argv) > 3: - sys.stderr.write("usage: %s output_directory [client_release_label]\n" % (sys.argv[0],)) +if len(sys.argv) > 3: + sys.stderr.write("usage: %s [output_file] [client_release_label]\n" % (sys.argv[0],)) sys.exit(1) -output_directory = sys.argv[1] +if len(sys.argv) > 1: + output_file = os.path.abspath(sys.argv[1]) +else: + output_file = os.path.join(scripts_dir, "swagger", "api-docs.json") + release_label = sys.argv[2] if len(sys.argv) > 2 else "unstable" major_version = release_label @@ -30,6 +35,10 @@ match = re.match("^(r\d)+(\.\d+)*$", major_version) if match: major_version = match.group(1) + +logging.basicConfig() + +os.chdir(templating_dir) apis = MatrixUnits().load_swagger_apis() output = { @@ -53,14 +62,15 @@ for file, contents in apis.items(): output["paths"][path] = {} output["paths"][path][method] = spec -path = os.path.join(output_directory, "api-docs") +print "Generating %s" % output_file + try: - os.makedirs(os.path.dirname(path)) + os.makedirs(os.path.dirname(output_file)) except OSError as e: if e.errno != errno.EEXIST: raise -with open(path, "w") as f: +with open(output_file, "w") as f: text = json.dumps(output, sort_keys=True, indent=4) text = text.replace("%CLIENT_RELEASE_LABEL%", release_label) text = text.replace("%CLIENT_MAJOR_VERSION%", major_version)