|
| 1 | +from pathlib import Path |
| 2 | +import argparse |
| 3 | +import os |
| 4 | + |
| 5 | + |
| 6 | +# We get the list of files change as an input |
| 7 | +parser = argparse.ArgumentParser() |
| 8 | +parser.add_argument("changed_files_in_the_pull_request", nargs="*", help="List of changed files") |
| 9 | +args = parser.parse_args() |
| 10 | + |
| 11 | +changed_files_in_the_pull_request = args.changed_files_in_the_pull_request |
| 12 | +changed_files_in_the_pull_request_paths = [Path(file) for file in changed_files_in_the_pull_request] |
| 13 | + |
| 14 | +# We assume nothing has been changed |
| 15 | + |
| 16 | +core_changed = False |
| 17 | +pyproject_toml_changed = False |
| 18 | +neobaseextractor_changed = False |
| 19 | +extractors_changed = False |
| 20 | +plexon2_changed = False |
| 21 | +preprocessing_changed = False |
| 22 | +postprocessing_changed = False |
| 23 | +qualitymetrics_changed = False |
| 24 | +sorters_changed = False |
| 25 | +sorters_external_changed = False |
| 26 | +sorters_internal_changed = False |
| 27 | +comparison_changed = False |
| 28 | +curation_changed = False |
| 29 | +widgets_changed = False |
| 30 | +exporters_changed = False |
| 31 | +sortingcomponents_changed = False |
| 32 | +generation_changed = False |
| 33 | + |
| 34 | + |
| 35 | +for changed_file in changed_files_in_the_pull_request_paths: |
| 36 | + |
| 37 | + file_is_in_src = changed_file.parts[0] == "src" |
| 38 | + |
| 39 | + if not file_is_in_src: |
| 40 | + |
| 41 | + if changed_file.name == "pyproject.toml": |
| 42 | + pyproject_toml_changed = True |
| 43 | + |
| 44 | + else: |
| 45 | + if changed_file.name == "neobaseextractor.py": |
| 46 | + neobaseextractor_changed = True |
| 47 | + elif changed_file.name == "plexon2.py": |
| 48 | + extractors_changed = True |
| 49 | + elif "core" in changed_file.parts: |
| 50 | + conditions_changed = True |
| 51 | + elif "extractors" in changed_file.parts: |
| 52 | + extractors_changed = True |
| 53 | + elif "preprocessing" in changed_file.parts: |
| 54 | + preprocessing_changed = True |
| 55 | + elif "postprocessing" in changed_file.parts: |
| 56 | + postprocessing_changed = True |
| 57 | + elif "qualitymetrics" in changed_file.parts: |
| 58 | + qualitymetrics_changed = True |
| 59 | + elif "comparison" in changed_file.parts: |
| 60 | + comparison_changed = True |
| 61 | + elif "curation" in changed_file.parts: |
| 62 | + curation_changed = True |
| 63 | + elif "widgets" in changed_file.parts: |
| 64 | + widgets_changed = True |
| 65 | + elif "exporters" in changed_file.parts: |
| 66 | + exporters_changed = True |
| 67 | + elif "sortingcomponents" in changed_file.parts: |
| 68 | + sortingcomponents_changed = True |
| 69 | + elif "generation" in changed_file.parts: |
| 70 | + generation_changed = True |
| 71 | + elif "sorters" in changed_file.parts: |
| 72 | + if "external" in changed_file.parts: |
| 73 | + sorters_external_changed = True |
| 74 | + elif "internal" in changed_file.parts: |
| 75 | + sorters_internal_changed = True |
| 76 | + else: |
| 77 | + sorters_changed = True |
| 78 | + |
| 79 | + |
| 80 | +run_everything = core_changed or pyproject_toml_changed or neobaseextractor_changed |
| 81 | +run_generation_tests = run_everything or generation_changed |
| 82 | +run_extractor_tests = run_everything or extractors_changed |
| 83 | +run_preprocessing_tests = run_everything or preprocessing_changed |
| 84 | +run_postprocessing_tests = run_everything or postprocessing_changed |
| 85 | +run_qualitymetrics_tests = run_everything or qualitymetrics_changed |
| 86 | +run_curation_tests = run_everything or curation_changed |
| 87 | +run_sortingcomponents_tests = run_everything or sortingcomponents_changed |
| 88 | + |
| 89 | +run_comparison_test = run_everything or run_generation_tests or comparison_changed |
| 90 | +run_widgets_test = run_everything or run_qualitymetrics_tests or run_preprocessing_tests or widgets_changed |
| 91 | +run_exporters_test = run_everything or run_widgets_test or exporters_changed |
| 92 | + |
| 93 | +run_sorters_test = run_everything or sorters_changed |
| 94 | +run_internal_sorters_test = run_everything or run_sortingcomponents_tests or sorters_internal_changed |
| 95 | + |
| 96 | +install_plexon_dependencies = plexon2_changed |
| 97 | + |
| 98 | +environment_varaiables_to_add = { |
| 99 | + "RUN_EXTRACTORS_TESTS": run_extractor_tests, |
| 100 | + "RUN_PREPROCESSING_TESTS": run_preprocessing_tests, |
| 101 | + "RUN_POSTPROCESSING_TESTS": run_postprocessing_tests, |
| 102 | + "RUN_QUALITYMETRICS_TESTS": run_qualitymetrics_tests, |
| 103 | + "RUN_CURATION_TESTS": run_curation_tests, |
| 104 | + "RUN_SORTINGCOMPONENTS_TESTS": run_sortingcomponents_tests, |
| 105 | + "RUN_GENERATION_TESTS": run_generation_tests, |
| 106 | + "RUN_COMPARISON_TESTS": run_comparison_test, |
| 107 | + "RUN_WIDGETS_TESTS": run_widgets_test, |
| 108 | + "RUN_EXPORTERS_TESTS": run_exporters_test, |
| 109 | + "RUN_SORTERS_TESTS": run_sorters_test, |
| 110 | + "RUN_INTERNAL_SORTERS_TESTS": run_internal_sorters_test, |
| 111 | + "INSTALL_PLEXON_DEPENDENCIES": install_plexon_dependencies, |
| 112 | +} |
| 113 | + |
| 114 | +# Write the conditions to the GITHUB_ENV file |
| 115 | +env_file = os.getenv("GITHUB_ENV") |
| 116 | +with open(env_file, "a") as f: |
| 117 | + for key, value in environment_varaiables_to_add.items(): |
| 118 | + f.write(f"{key}={value}\n") |
0 commit comments