Add entry point to generate OpenAPI yaml/json
This is designed to be used as a console entry point so we can generate the OpenAPI description without starting the server.
This commit is contained in:
parent
1e21ce51fc
commit
202d942c90
1 changed files with 22 additions and 0 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
import argparse
|
||||||
import atexit
|
import atexit
|
||||||
import logging
|
import logging
|
||||||
import logging.handlers
|
import logging.handlers
|
||||||
|
|
@ -243,6 +244,27 @@ def ofm_serve():
|
||||||
server: Server = Server(app)
|
server: Server = Server(app)
|
||||||
server.run(host="0.0.0.0", port=5000, debug=debug_app, zeroconf=True)
|
server.run(host="0.0.0.0", port=5000, debug=debug_app, zeroconf=True)
|
||||||
|
|
||||||
|
def generate_openapi():
|
||||||
|
parser = argparse.ArgumentParser("Generate an OpenAPI specification document")
|
||||||
|
parser.add_argument(
|
||||||
|
'-o',
|
||||||
|
dest='output',
|
||||||
|
default="openapi.yaml",
|
||||||
|
help=(
|
||||||
|
'Specify the output filename. If it ends in .json, we output JSON.'
|
||||||
|
'Use .yml or .yaml for YAML (which is the default'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
fname = args.output
|
||||||
|
if fname.endswith(".json"):
|
||||||
|
import json
|
||||||
|
with open(fname, 'w') as fd:
|
||||||
|
json.dump(labthing.spec.to_dict(), fd)
|
||||||
|
else:
|
||||||
|
with open(fname, 'w') as fd:
|
||||||
|
fd.write(labthing.spec.to_yaml())
|
||||||
|
|
||||||
|
|
||||||
# Start the app if the module is run directly
|
# Start the app if the module is run directly
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue