Skip to content

Commit 746b992

Browse files
authored
Merge pull request #1 from boegel/4302_failure_hooks
clean up passing of data produced by prepare_main into main
2 parents d9b15f0 + 20c99cd commit 746b992

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

easybuild/main.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -580,22 +580,19 @@ def process_eb_args(eb_args, eb_go, cfg_settings, modtool, testing, init_session
580580
return overall_success
581581

582582

583-
def main(args=None, logfile=None, do_build=None, testing=False, modtool=None, eb_go=None, cfg_settings=None,
584-
init_session_state=None, hooks=None):
583+
def main(args=None, logfile=None, do_build=None, testing=False, modtool=None, prepared_cfg_data=None):
585584
"""
586585
Main function: parse command line options, and act accordingly.
587586
:param args: command line arguments to use
588587
:param logfile: log file to use
589588
:param do_build: whether or not to actually perform the build
590589
:param testing: enable testing mode
591-
:param eb_go: easybuild general options object
592-
:param cfg_settings: configuration settings of easybuild
593-
:param init_session_state: session state
594-
:param hooks: available hooks
590+
:param prepared_cfg_data: prepared configuration data for main function, as returned by prepare_main (or None)
595591
"""
596-
597-
if any(i is None for i in [eb_go, cfg_settings, init_session_state, hooks]) or any([args, logfile, testing]):
598-
eb_go, cfg_settings, init_session_state, hooks = prepare_main(args=args, logfile=logfile, testing=testing)
592+
if prepared_cfg_data is None or any([args, logfile, testing]):
593+
init_session_state, eb_go, cfg_settings = prepare_main(args=args, logfile=logfile, testing=testing)
594+
else:
595+
init_session_state, eb_go, cfg_settings = prepared_cfg_data
599596

600597
options, orig_paths = eb_go.options, eb_go.args
601598

@@ -731,7 +728,7 @@ def prepare_main(args=None, logfile=None, testing=None):
731728
:param args: command line arguments to take into account when parsing the EasyBuild configuration settings
732729
:param logfile: log file to use
733730
:param testing: enable testing mode
734-
:return: easybuild options, configuration settings, session state and hooks
731+
:return: 3-tuple with initial session state data, EasyBuildOptions instance, and tuple with configuration settings
735732
"""
736733
register_lock_cleanup_signal_handlers()
737734

@@ -748,14 +745,15 @@ def prepare_main(args=None, logfile=None, testing=None):
748745
# purposely session state very early, to avoid modules loaded by EasyBuild meddling in
749746
init_session_state = session_state()
750747
eb_go, cfg_settings = set_up_configuration(args=args, logfile=logfile, testing=testing)
751-
hooks = load_hooks(eb_go.options.hooks)
752-
return eb_go, cfg_settings, init_session_state, hooks
748+
749+
return init_session_state, eb_go, cfg_settings
753750

754751

755752
if __name__ == "__main__":
756-
eb_go, cfg_settings, init_session_state, hooks = prepare_main()
753+
init_session_state, eb_go, cfg_settings = prepare_main()
754+
hooks = load_hooks(eb_go.options.hooks)
757755
try:
758-
main(eb_go=eb_go, cfg_settings=cfg_settings, init_session_state=init_session_state, hooks=hooks)
756+
main(prepared_cfg_data=(init_session_state, eb_go, cfg_settings))
759757
except EasyBuildError as err:
760758
run_hook(FAIL, hooks, args=[err])
761759
print_error(err.msg)

0 commit comments

Comments
 (0)