5858from easybuild .tools .docs import list_software
5959from easybuild .tools .filetools import adjust_permissions , cleanup , write_file
6060from easybuild .tools .github import check_github , find_easybuild_easyconfig , install_github_token
61- from easybuild .tools .github import close_pr , list_prs , new_pr , merge_pr , update_pr
61+ from easybuild .tools .github import close_pr , list_prs , new_pr , merge_pr , sync_pr_with_develop , update_pr
6262from easybuild .tools .hooks import START , END , load_hooks , run_hook
6363from easybuild .tools .modules import modules_tool
6464from easybuild .tools .options import set_up_configuration , use_color
@@ -293,8 +293,8 @@ def main(args=None, logfile=None, do_build=None, testing=False, modtool=None):
293293 categorized_paths = categorize_files_by_type (orig_paths )
294294
295295 # command line options that do not require any easyconfigs to be specified
296- new_update_preview_pr = options .new_pr or options .update_pr or options .preview_pr
297- no_ec_opts = [options .aggregate_regtest , options .regtest , search_query , new_update_preview_pr ]
296+ pr_options = options .new_pr or options .preview_pr or options .sync_pr_with_develop or options . update_pr
297+ no_ec_opts = [options .aggregate_regtest , options .regtest , pr_options , search_query ]
298298
299299 # determine paths to easyconfigs
300300 determined_paths = det_easyconfig_paths (categorized_paths ['easyconfigs' ])
@@ -355,7 +355,7 @@ def main(args=None, logfile=None, do_build=None, testing=False, modtool=None):
355355 dry_run_mode = options .dry_run or options .dry_run_short or options .missing_modules
356356
357357 # skip modules that are already installed unless forced, or unless an option is used that warrants not skipping
358- if not (forced or dry_run_mode or options .extended_dry_run or new_update_preview_pr or options .inject_checksums ):
358+ if not (forced or dry_run_mode or options .extended_dry_run or pr_options or options .inject_checksums ):
359359 retained_ecs = skip_available (easyconfigs , modtool )
360360 if not testing :
361361 for skipped_ec in [ec for ec in easyconfigs if ec not in retained_ecs ]:
@@ -366,26 +366,30 @@ def main(args=None, logfile=None, do_build=None, testing=False, modtool=None):
366366 if len (easyconfigs ) > 0 :
367367 # resolve dependencies if robot is enabled, except in dry run mode
368368 # one exception: deps *are* resolved with --new-pr or --update-pr when dry run mode is enabled
369- if options .robot and (not dry_run_mode or new_update_preview_pr ):
369+ if options .robot and (not dry_run_mode or pr_options ):
370370 print_msg ("resolving dependencies ..." , log = _log , silent = testing )
371371 ordered_ecs = resolve_dependencies (easyconfigs , modtool )
372372 else :
373373 ordered_ecs = easyconfigs
374- elif new_update_preview_pr :
374+ elif pr_options :
375375 ordered_ecs = None
376376 else :
377377 print_msg ("No easyconfigs left to be built." , log = _log , silent = testing )
378378 ordered_ecs = []
379379
380380 # creating/updating PRs
381- if new_update_preview_pr :
381+ if pr_options :
382382 if options .new_pr :
383383 new_pr (categorized_paths , ordered_ecs , title = options .pr_title , descr = options .pr_descr ,
384384 commit_msg = options .pr_commit_msg )
385385 elif options .preview_pr :
386386 print (review_pr (paths = determined_paths , colored = use_color (options .color )))
387- else :
387+ elif options .sync_pr_with_develop :
388+ sync_pr_with_develop (options .sync_pr_with_develop )
389+ elif options .update_pr :
388390 update_pr (options .update_pr , categorized_paths , ordered_ecs , commit_msg = options .pr_commit_msg )
391+ else :
392+ raise EasyBuildError ("Unknown PR option!" )
389393
390394 # dry_run: print all easyconfigs and dependencies, and whether they are already built
391395 elif dry_run_mode :
0 commit comments