make_java_srclists.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import os
  2. import sys
  3. import argparse
  4. import process_command_files as pcf
  5. import java_pack_to_file as jcov
  6. def writelines(f, rng):
  7. f.writelines(item + '\n' for item in rng)
  8. def main():
  9. args = pcf.get_args(sys.argv[1:])
  10. parser = argparse.ArgumentParser()
  11. parser.add_argument('--moddir')
  12. parser.add_argument('--java')
  13. parser.add_argument('--groovy')
  14. parser.add_argument('--kotlin')
  15. parser.add_argument('--coverage')
  16. parser.add_argument('--source-root')
  17. args, remaining_args = parser.parse_known_args(args)
  18. java = []
  19. kotlin = []
  20. groovy = []
  21. coverage = []
  22. cur_resources_list_file = None
  23. cur_jsources_list_file = None
  24. cur_srcdir = None
  25. cur_resources = []
  26. cur_jsources = []
  27. FILE_ARG = 1
  28. RESOURCES_DIR_ARG = 2
  29. SRCDIR_ARG = 3
  30. JSOURCES_DIR_ARG = 4
  31. next_arg=FILE_ARG
  32. for src in remaining_args:
  33. if next_arg == RESOURCES_DIR_ARG:
  34. assert cur_resources_list_file is None
  35. cur_resources_list_file = src
  36. next_arg = FILE_ARG
  37. continue
  38. elif next_arg == JSOURCES_DIR_ARG:
  39. assert cur_jsources_list_file is None
  40. cur_jsources_list_file = src
  41. next_arg = FILE_ARG
  42. continue
  43. elif next_arg == SRCDIR_ARG:
  44. assert cur_srcdir is None
  45. cur_srcdir = src if os.path.isabs(src) else os.path.join(args.moddir, src)
  46. next_arg = FILE_ARG
  47. continue
  48. if src.endswith(".java"):
  49. java.append(src)
  50. kotlin.append(src)
  51. if args.coverage and args.source_root:
  52. rel = os.path.relpath(src, args.source_root)
  53. if not rel.startswith('..' + os.path.sep):
  54. coverage.append(rel)
  55. elif args.kotlin and src.endswith(".kt"):
  56. kotlin.append(src)
  57. elif args.groovy and src.endswith(".groovy"):
  58. groovy.append(src)
  59. else:
  60. if src == '--resources':
  61. if cur_resources_list_file is not None:
  62. with open(cur_resources_list_file, 'w') as f:
  63. writelines(f, cur_resources)
  64. cur_resources_list_file = None
  65. cur_srcdir = None
  66. cur_resources = []
  67. next_arg = RESOURCES_DIR_ARG
  68. continue
  69. if src == '--jsources':
  70. if cur_jsources_list_file is not None:
  71. with open(cur_jsources_list_file, 'w') as f:
  72. writelines(f, cur_jsources)
  73. cur_jsources_list_file = None
  74. cur_jsources = []
  75. next_arg = JSOURCES_DIR_ARG
  76. continue
  77. elif src == '--srcdir':
  78. next_arg = SRCDIR_ARG
  79. continue
  80. else:
  81. assert cur_srcdir is not None and cur_resources_list_file is not None
  82. cur_resources.append(os.path.relpath(src, cur_srcdir))
  83. if cur_jsources_list_file is not None:
  84. assert cur_srcdir is not None
  85. cur_jsources.append(os.path.relpath(src, cur_srcdir))
  86. if cur_resources_list_file is not None:
  87. with open(cur_resources_list_file, 'w') as f:
  88. writelines(f, cur_resources)
  89. if cur_jsources_list_file is not None:
  90. with open(cur_jsources_list_file, 'w') as f:
  91. writelines(f, cur_jsources)
  92. if args.java:
  93. with open(args.java, 'w') as f:
  94. writelines(f, java)
  95. if args.kotlin:
  96. with open(args.kotlin, 'w') as f:
  97. writelines(f, kotlin)
  98. if args.groovy:
  99. with open(args.groovy, 'w') as f:
  100. writelines(f, groovy)
  101. if args.coverage:
  102. jcov.write_coverage_sources(args.coverage, args.source_root, coverage)
  103. return 0
  104. if __name__ == '__main__':
  105. sys.exit(main())