Add swagger-drogon generator
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from .contract import load_contract
|
||||
from .generator import generate
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(prog="swagger-drogon")
|
||||
subparsers = parser.add_subparsers(dest="command")
|
||||
|
||||
generate_parser = subparsers.add_parser("generate")
|
||||
generate_parser.add_argument("--controllers", type=Path, required=True)
|
||||
generate_parser.add_argument("--sources", type=Path, nargs="*", default=[])
|
||||
generate_parser.add_argument("--contract", type=Path)
|
||||
generate_parser.add_argument("--out", type=Path, required=True)
|
||||
generate_parser.add_argument("--title", default="Drogon API")
|
||||
generate_parser.add_argument("--version", default="0.1.0")
|
||||
generate_parser.add_argument("--server", default="http://localhost:5555")
|
||||
|
||||
args = parser.parse_args()
|
||||
if args.command != "generate":
|
||||
parser.error("expected command: generate")
|
||||
|
||||
contract = load_contract(args.contract) if args.contract else {}
|
||||
spec = generate(
|
||||
controllers_dir=args.controllers,
|
||||
source_dirs=args.sources,
|
||||
contract=contract,
|
||||
title=args.title,
|
||||
version=args.version,
|
||||
server=args.server,
|
||||
)
|
||||
args.out.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.out.write_text(
|
||||
json.dumps(spec, indent=2, sort_keys=True) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
Reference in New Issue
Block a user