@@ -504,7 +504,9 @@ def run_scan(
504504 echo_func = None ,
505505 timing = False ,
506506 keep_temp_files = False ,
507+ # TODO: Review return_results as it does not return Packages and Dependencies
507508 return_results = True ,
509+ return_codebase = False ,
508510 test_mode = False ,
509511 test_slow_mode = False ,
510512 test_error_mode = False ,
@@ -522,6 +524,12 @@ def run_scan(
522524 error. See scancode() for arguments details.
523525 """
524526
527+ assert not (return_results is True and return_codebase is True ), 'Only one of return_results and return_codebase can be True'
528+
529+ if return_codebase and max_in_memory > 0 :
530+ # We're keeping temp files otherwise the codebase is gone
531+ keep_temp_files = True
532+
525533 plugins_option_defaults = {clio .name : clio .default for clio in plugin_options }
526534 requested_options = dict (plugins_option_defaults )
527535 requested_options .update (kwargs )
@@ -667,7 +675,7 @@ def echo_func(*_args, **_kwargs):
667675 'selected when using only scan data.' )
668676 raise ScancodeCliUsageError (msg )
669677
670- if not output_plugins and not return_results :
678+ if not output_plugins and not ( return_results or return_codebase ) :
671679 msg = ('ERROR: Missing output option(s): at least one output '
672680 'option is required to save scan results.' )
673681 raise ScancodeCliUsageError (msg )
@@ -1002,6 +1010,8 @@ def echo_func(*_args, **_kwargs):
10021010 # the structure is exactly the same as the JSON output
10031011 from formattedcode .output_json import get_results
10041012 results = get_results (codebase , as_list = True , ** requested_options )
1013+ elif return_codebase :
1014+ results = codebase
10051015
10061016 finally :
10071017 # remove temporary files
@@ -1657,3 +1667,9 @@ def get_pretty_params(ctx, generic_paths=False):
16571667 options .append ((cli_opt , value ))
16581668
16591669 return dict (sorted (args ) + sorted (options ))
1670+
1671+
1672+ if __name__ == '__main__' :
1673+ # We have this __main__ block so that we can run scancode as a script.
1674+ # This is needed so we can use the Python debugging features in VSCode.
1675+ scancode ()
0 commit comments