build_jsonrpc.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. class Method:
  2. def __init__(self, name, params):
  3. self.name = name
  4. self.params = params.replace(',', ', ');
  5. self.result = ""
  6. self.note = ""
  7. def set_result(self, result):
  8. self.result = result.replace(':', ': ');
  9. self.result = result.replace(',', ', ');
  10. def __str__(self):
  11. method_str = '### ' + self.name + ': \n' \
  12. + '`params`: ' + self.params + '\n' \
  13. + '\n' \
  14. + '`result`: ' + self.result + '\n' \
  15. + '\n' \
  16. if not self.note == "":
  17. method_str += '> `note`: ' + self.note + '\n'
  18. return method_str
  19. def main():
  20. methods = []
  21. with open('../src/bin/darkfid.rs') as f:
  22. lines = f.readlines()
  23. for i in range(0, len(lines)):
  24. line = lines[i]
  25. if line.__contains__("RPCAPI"):
  26. line = lines[i + 1]
  27. if line.__contains__(' --> '):
  28. line = line.strip()
  29. words = line.split(' ')
  30. method = words[3][1::][:-2:]
  31. params = words[5][:-1:]
  32. methods.append(Method(method, params))
  33. line = lines[i + 2]
  34. if line.__contains__(' <-- '):
  35. line = line.strip()
  36. words = line.split(' ')
  37. methods[-1].set_result(words[3][:-1:])
  38. line = lines[i + 3]
  39. if line.__contains__("APINOTE"):
  40. methods[-1].note = line.strip().replace('// APINOTE:','')
  41. count = i + 4
  42. line = lines[count]
  43. while line.strip().startswith('//'):
  44. count += 1
  45. methods[-1].note += line[6::]
  46. line = lines[count]
  47. with open('src/clients/jsonrpc.md', 'w') as f:
  48. f.write('# JSONRPC API \n')
  49. f.write('## Methods \n')
  50. for m in methods:
  51. f.write('- [' + m.name + '](jsonrpc.md#' + m.name + ')\n')
  52. for m in methods:
  53. f.write(m.__str__())
  54. if __name__ == '__main__':
  55. main()