mirror of
https://github.com/matrix-org/matrix-spec
synced 2025-12-20 16:38:37 +01:00
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
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,6 +1,7 @@
|
||||||
scripts/gen
|
scripts/gen
|
||||||
scripts/continuserv/continuserv
|
scripts/continuserv/continuserv
|
||||||
scripts/speculator/speculator
|
scripts/speculator/speculator
|
||||||
|
/scripts/swagger
|
||||||
templating/out
|
templating/out
|
||||||
*.pyc
|
*.pyc
|
||||||
*.swp
|
*.swp
|
||||||
|
|
|
||||||
|
|
@ -7,22 +7,27 @@
|
||||||
|
|
||||||
import errno
|
import errno
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
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)
|
sys.path.insert(0, templating_dir)
|
||||||
os.chdir(templating_dir)
|
|
||||||
|
|
||||||
from matrix_templates.units import resolve_references, MatrixUnits
|
from matrix_templates.units import resolve_references, MatrixUnits
|
||||||
|
|
||||||
if len(sys.argv) < 2 or len(sys.argv) > 3:
|
if len(sys.argv) > 3:
|
||||||
sys.stderr.write("usage: %s output_directory [client_release_label]\n" % (sys.argv[0],))
|
sys.stderr.write("usage: %s [output_file] [client_release_label]\n" % (sys.argv[0],))
|
||||||
sys.exit(1)
|
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"
|
release_label = sys.argv[2] if len(sys.argv) > 2 else "unstable"
|
||||||
|
|
||||||
major_version = release_label
|
major_version = release_label
|
||||||
|
|
@ -30,6 +35,10 @@ match = re.match("^(r\d)+(\.\d+)*$", major_version)
|
||||||
if match:
|
if match:
|
||||||
major_version = match.group(1)
|
major_version = match.group(1)
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig()
|
||||||
|
|
||||||
|
os.chdir(templating_dir)
|
||||||
apis = MatrixUnits().load_swagger_apis()
|
apis = MatrixUnits().load_swagger_apis()
|
||||||
|
|
||||||
output = {
|
output = {
|
||||||
|
|
@ -53,14 +62,15 @@ for file, contents in apis.items():
|
||||||
output["paths"][path] = {}
|
output["paths"][path] = {}
|
||||||
output["paths"][path][method] = spec
|
output["paths"][path][method] = spec
|
||||||
|
|
||||||
path = os.path.join(output_directory, "api-docs")
|
print "Generating %s" % output_file
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.makedirs(os.path.dirname(path))
|
os.makedirs(os.path.dirname(output_file))
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
if e.errno != errno.EEXIST:
|
if e.errno != errno.EEXIST:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
with open(path, "w") as f:
|
with open(output_file, "w") as f:
|
||||||
text = json.dumps(output, sort_keys=True, indent=4)
|
text = json.dumps(output, sort_keys=True, indent=4)
|
||||||
text = text.replace("%CLIENT_RELEASE_LABEL%", release_label)
|
text = text.replace("%CLIENT_RELEASE_LABEL%", release_label)
|
||||||
text = text.replace("%CLIENT_MAJOR_VERSION%", major_version)
|
text = text.replace("%CLIENT_MAJOR_VERSION%", major_version)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue