update_modules_check.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. # Licensed to the Apache Software Foundation (ASF) under one or more
  2. # contributor license agreements. See the NOTICE file distributed with
  3. # this work for additional information regarding copyright ownership.
  4. # The ASF licenses this file to You under the Apache License, Version 2.0
  5. # (the "License"); you may not use this file except in compliance with
  6. # the License. You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. # !/usr/bin/python
  16. import json
  17. import sys
  18. def get_cv2_modules(files):
  19. get_modules(files, 1, "connector-", "seatunnel-connectors-v2")
  20. def get_cv2_e2e_modules(files):
  21. get_modules(files, 2, "connector-", "seatunnel-connector-v2-e2e")
  22. def get_engine_modules(files):
  23. # We don't run all connector e2e when engine module update
  24. print(",connector-seatunnel-e2e-base,connector-console-seatunnel-e2e")
  25. def get_engine_e2e_modules(files):
  26. get_modules(files, 2, "connector-", "seatunnel-engine-e2e")
  27. def get_modules(files, index, start_pre, root_module):
  28. update_files = json.loads(files)
  29. modules_name_set = set([])
  30. for file in update_files:
  31. names = file.split('/')
  32. module_name = names[index]
  33. if module_name.startswith(start_pre):
  34. modules_name_set.add(module_name)
  35. if len(names) > index + 1 and names[index + 1].startswith(start_pre):
  36. modules_name_set.add(names[index + 1])
  37. output_module = ""
  38. if len(modules_name_set) > 0:
  39. for module in modules_name_set:
  40. output_module = output_module + "," + module
  41. else:
  42. output_module = output_module + "," + root_module
  43. print(output_module)
  44. def replace_comma_to_commacolon(modules_str):
  45. modules_str = modules_str.replace(",", ",:")
  46. modules_str = ":" + modules_str
  47. print(modules_str)
  48. def get_sub_modules(file):
  49. output = ""
  50. with open(file, 'r', encoding='utf-8') as f:
  51. for line in f.readlines():
  52. line = line.replace(" ", "")
  53. if line.startswith("<string>"):
  54. line = line.replace(" ", "").replace("<string>", "").replace("</string>", "").replace("\n", "")
  55. output = output + "," + line
  56. print(output)
  57. def get_dependency_tree_includes(modules_str):
  58. modules = modules_str.split(',')
  59. output = ""
  60. for module in modules:
  61. output = ",org.apache.seatunnel:" + module + output
  62. output = output[1:len(output)]
  63. output = "-Dincludes=" + output
  64. print(output)
  65. def get_final_it_modules(file):
  66. output = ""
  67. with open(file, 'r', encoding='utf-8') as f:
  68. for line in f.readlines():
  69. if line.startswith("org.apache.seatunnel"):
  70. con = line.split(":")
  71. # find all e2e modules
  72. if con[2] == "jar" and "-e2e" in con[1] and "transform" not in con[1]:
  73. output = output + "," + ":" + con[1]
  74. output = output[1:len(output)]
  75. print(output)
  76. def get_final_ut_modules(file):
  77. output = ""
  78. with open(file, 'r', encoding='utf-8') as f:
  79. for line in f.readlines():
  80. if line.startswith("org.apache.seatunnel"):
  81. con = line.split(":")
  82. # find all e2e modules
  83. if con[2] == "jar":
  84. output = output + "," + ":" + con[1]
  85. output = output[1:len(output)]
  86. print(output)
  87. def remove_deleted_modules(pl_modules, deleted_modules):
  88. pl_modules_arr = pl_modules.replace(":", "").split(",")
  89. deleted_modules_arr = deleted_modules.split(",")
  90. output = ""
  91. for module in pl_modules_arr:
  92. if deleted_modules_arr.count(module) == 0:
  93. output = output + ",:" + module
  94. output = output[1:len(output)]
  95. print(output)
  96. def get_deleted_modules(files):
  97. update_files = json.loads(files)
  98. modules_name_set = set([])
  99. for file in update_files:
  100. names = file.split('/')
  101. module_name = names[len(names) - 2]
  102. modules_name_set.add(module_name)
  103. output_module = ""
  104. if len(modules_name_set) > 0:
  105. for module in modules_name_set:
  106. output_module = output_module + "," + module
  107. output_module = output_module[1:len(output_module)]
  108. print(output_module)
  109. def get_sub_it_modules(modules, total_num, current_num):
  110. modules_arr = modules.split(",")
  111. modules_arr.remove("connector-jdbc-e2e")
  112. modules_arr.remove("connector-kafka-e2e")
  113. modules_arr.remove("connector-rocketmq-e2e")
  114. output = ""
  115. for i, module in enumerate(modules_arr):
  116. if len(module) > 0 and i % int(total_num) == int(current_num):
  117. output = output + ",:" + module
  118. output = output[1:len(output)]
  119. print(output)
  120. def get_sub_update_it_modules(modules, total_num, current_num):
  121. final_modules = list()
  122. # :connector-jdbc-e2e-common,:connector-jdbc-e2e-part-1 --> connector-jdbc-e2e-common,:connector-jdbc-e2e-part-1
  123. modules = modules[1:]
  124. # connector-jdbc-e2e-common,:connector-jdbc-e2e-part-1 --> [connector-jdbc-e2e-common, connector-jdbc-e2e-part-1]
  125. module_list = modules.split(",:")
  126. for i, module in enumerate(module_list):
  127. if len(module) > 0 and i % int(total_num) == int(current_num):
  128. final_modules.append(":" + module)
  129. print(",".join(final_modules))
  130. def main(argv):
  131. if argv[1] == "cv2":
  132. get_cv2_modules(argv[2])
  133. elif argv[1] == "cv2-e2e":
  134. get_cv2_e2e_modules(argv[2])
  135. elif argv[1] == "cv2-flink-e2e":
  136. get_cv2_flink_e2e_modules(argv[2])
  137. elif argv[1] == "cv2-spark-e2e":
  138. get_cv2_spark_e2e_modules(argv[2])
  139. elif argv[1] == "engine":
  140. get_engine_modules(argv[2])
  141. elif argv[1] == "engine-e2e":
  142. get_engine_e2e_modules(argv[2])
  143. elif argv[1] == "tree":
  144. get_dependency_tree_includes(argv[2])
  145. elif argv[1] == "final_it":
  146. get_final_it_modules(argv[2])
  147. elif argv[1] == "final_ut":
  148. get_final_ut_modules(argv[2])
  149. elif argv[1] == "replace":
  150. replace_comma_to_commacolon(argv[2])
  151. elif argv[1] == "sub":
  152. get_sub_modules(argv[2])
  153. elif argv[1] == "delete":
  154. get_deleted_modules(argv[2])
  155. elif argv[1] == "rm":
  156. remove_deleted_modules(argv[2], argv[3])
  157. elif argv[1] == "sub_it_module":
  158. get_sub_it_modules(argv[2], argv[3], argv[4])
  159. elif argv[1] == "sub_update_it_module":
  160. get_sub_update_it_modules(argv[2], argv[3], argv[4])
  161. if __name__ == "__main__":
  162. main(sys.argv)