make_doc_file.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import shutil
  2. import os
  3. import requests
  4. #bsp.h文件列表
  5. bsp_header_list = [
  6. {"name":"Air101/Air103","url":"https://gitee.com/openLuat/luatos-soc-air101/raw/master/app/port/luat_conf_bsp.h"},
  7. {"name":"Air105","url":"https://gitee.com/openLuat/luatos-soc-air105/raw/master/application/include/luat_conf_bsp.h"},
  8. {"name":"ESP32C3","url":"https://gitee.com/openLuat/luatos-soc-idf5/raw/master/luatos/include/luat_conf_bsp.h"},
  9. {"name":"Air780","url":"https://gitee.com/openLuat/luatos-soc-2022/raw/master/project/luatos/inc/luat_conf_bsp.h"},
  10. ]
  11. print("getting bsp.h files...")
  12. for bsp in bsp_header_list:
  13. print("getting "+bsp["name"]+"...")
  14. bsp["url"] = requests.get(bsp["url"]).text
  15. print("done "+ str(len(bsp["url"])) + " bytes")
  16. def get_tags(tag):
  17. r = ["{bdg-success}`已适配`"]
  18. for bsp in bsp_header_list:
  19. if bsp["url"].find(" "+tag+" ") >= 0 or bsp["url"].find(" "+tag+"\r") >= 0 or bsp["url"].find(" "+tag+"\n") >= 0:
  20. r.append("{bdg-primary}`" + bsp["name"] + "`")
  21. if len(r) > 1:
  22. return " ".join(r)
  23. else:
  24. return "{bdg-secondary}`适配状态未知`"
  25. def make(path,modules,index_text):
  26. try:
  27. shutil.rmtree(path)
  28. except:
  29. pass
  30. os.mkdir(path)
  31. doc = open(path+"index.rst", "a+",encoding='utf-8')
  32. doc.write(index_text)
  33. for module in modules:
  34. mdoc = open(path+module["module"]+".md", "a+",encoding='utf-8')
  35. mdoc.write("# "+module["module"]+" - "+module["summary"]+"\n\n")
  36. if len(module["tag"]) > 0:
  37. mdoc.write(get_tags(module["tag"]))
  38. mdoc.write("\n\n")
  39. if len(module["url"]) > 0:
  40. mdoc.write("```{note}\n本页文档由[这个文件]("+module["url"]+")自动生成。如有错误,请提交issue或帮忙修改后pr,谢谢!\n```\n\n")
  41. if len(module["demo"]) > 0:
  42. mdoc.write("```{tip}\n本库有专属demo,[点此链接查看"+module["module"]+"的demo例子]("+module["demo"]+")\n```\n")
  43. if len(module["video"]) > 0:
  44. mdoc.write("```{tip}\n本库还有视频教程,[点此链接查看]("+module["video"]+")\n```\n\n")
  45. else:
  46. mdoc.write("\n")
  47. if len(module["usage"]) > 0:
  48. mdoc.write("**示例**\n\n")
  49. mdoc.write("```lua\n"+module["usage"]+"\n```\n\n")
  50. if len(module["const"]) > 0:
  51. mdoc.write("## 常量\n\n")
  52. mdoc.write("|常量|类型|解释|\n|-|-|-|\n")
  53. for const in module["const"]:
  54. mdoc.write("|"+const["var"].replace("|","\|")+"|"+const["type"].replace("|","\|")+"|"+const["summary"].replace("|","\|")+"|\n")
  55. mdoc.write("\n\n")
  56. doc.write(" "+module["module"]+"\n")
  57. for api in module["api"]:
  58. mdoc.write("## "+api["api"]+"\n\n")
  59. mdoc.write(api["summary"]+"\n\n")
  60. mdoc.write("**参数**\n\n")
  61. if len(api["args"]) > 0:
  62. mdoc.write("|传入值类型|解释|\n|-|-|\n")
  63. for arg in api["args"]:
  64. mdoc.write("|"+arg["type"].replace("|","\|")+"|"+arg["summary"].replace("|","\|")+"|\n")
  65. mdoc.write("\n")
  66. else:
  67. mdoc.write("无\n\n")
  68. mdoc.write("**返回值**\n\n")
  69. if len(api["return"]) > 0:
  70. mdoc.write("|返回值类型|解释|\n|-|-|\n")
  71. for arg in api["return"]:
  72. mdoc.write("|"+arg["type"].replace("|","\|")+"|"+arg["summary"].replace("|","\|")+"|\n")
  73. mdoc.write("\n")
  74. else:
  75. mdoc.write("无\n\n")
  76. mdoc.write("**例子**\n\n")
  77. if len(api["usage"]) == 0:
  78. mdoc.write("无\n\n")
  79. else:
  80. mdoc.write("```lua\n"+api["usage"]+"\n```\n\n")
  81. mdoc.write("---\n\n")
  82. mdoc.close()
  83. doc.close()
  84. def get_description(api):
  85. s = api["api"]+" - "+api["summary"]+"\n"
  86. if len(api["args"]) > 0:
  87. s = s + "传入值:\n"
  88. for arg in api["args"]:
  89. s = s + arg["type"] + " " + arg["summary"]+"\n"
  90. if len(api["return"]) > 0:
  91. s = s + "返回值:\n"
  92. for arg in api["return"]:
  93. s = s + arg["type"] + " " + arg["summary"]+"\n"
  94. if len(api["usage"]) > 0:
  95. s = s + "例子:\n" + api["usage"]
  96. return s