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.
This commit is contained in:
parent
9b93c5f463
commit
c39d797cce
2 changed files with 19 additions and 8 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,7 @@
|
|||
scripts/gen
|
||||
scripts/continuserv/continuserv
|
||||
scripts/speculator/speculator
|
||||
/scripts/swagger
|
||||
templating/out
|
||||
*.pyc
|
||||
*.swp
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue