#!/usr/bin/env python3 # This script is used to post-process swagger.json generated by buf: # 1. remove protobufNullValue that is not used # 2. convert the example and default values of integer type to int import sys import json def process(data:dict): if type(data) != dict: return data nullKey = "" for k, v in data.items(): if k == "protobufNullValue": nullKey = k elif type(v) == dict: newv = process(v) data[k] = newv elif type(v) == list: for i in range(len(v)): v[i] = process(v[i]) data[k] = v elif k == "type" and data[k] == "integer": if "default" in data.keys() and type(data["default"]) != int: data["default"] = int(data["default"]) if "example" in data.keys() and type(data["example"]) != int: data["example"] = int(data["example"]) if nullKey != "": del(data[nullKey]) return data def main(): if len(sys.argv) != 2: print('postbuf.py ') sys.exit(1) fname = sys.argv[1] data = dict() with open(fname,"r") as ifile: data = json.load(ifile) data = process(data) with open(fname, "w") as ofile: json.dump(data, ofile, indent=2) ofile.write("\n") if __name__ == "__main__": main()