1010import re
1111import getopt
1212import yaml
13+ from pathlib import Path
14+ from shutil import rmtree as rmdir
1315from datetime import datetime
1416from fosslight_source import run_scancode
15- from fosslight_dependency import analyze_dependency
17+ from fosslight_dependency . run_dependency_scanner import main as dep_main
1618from fosslight_util .download import cli_download_and_extract
1719from ._get_input import get_input_mode
1820from ._help import print_help_msg
@@ -80,7 +82,8 @@ def set_sub_parameter(default_params, params): # For dependency
8082 return default_params
8183
8284
83- def run (src_path , dep_path , dep_arguments , output_path , need_init = True , result_log = {}):
85+ def run (src_path , dep_path , dep_arguments , output_path , remove_raw_data = True ,
86+ remove_src_data = True , need_init = True , result_log = {}):
8487 try :
8588 success = True
8689 if need_init :
@@ -89,9 +92,9 @@ def run(src_path, dep_path, dep_arguments, output_path, need_init=True, result_l
8992 final_excel_dir = output_path
9093
9194 if success :
92- output_files = {"SRC" : _OUTPUT_FILE_PREFIX + "SRC " ,
93- "BIN" : _OUTPUT_FILE_PREFIX + "BIN " ,
94- "DEP" : _OUTPUT_FILE_PREFIX + "DEP " ,
95+ output_files = {"SRC" : "FL_Source " ,
96+ "BIN" : "FL_Binary.xlsx " ,
97+ "DEP" : "FL_Dependency " ,
9598 "REUSE" : "reuse.xml" ,
9699 "FINAL" : _OUTPUT_FILE_PREFIX + _start_time + '.xlsx' }
97100
@@ -105,7 +108,7 @@ def run(src_path, dep_path, dep_arguments, output_path, need_init=True, result_l
105108 set_sub_parameter (["DEP" ,
106109 "-p" , os .path .abspath (dep_path ),
107110 "-o" , _output_dir ], dep_arguments ),
108- analyze_dependency . main , "Dependency Analysis" )
111+ dep_main , "Dependency Analysis" )
109112
110113 ouput_file = os .path .join (final_excel_dir , output_files ["FINAL" ])
111114 success , error_msg = merge_excels (_output_dir , ouput_file )
@@ -123,13 +126,23 @@ def run(src_path, dep_path, dep_arguments, output_path, need_init=True, result_l
123126 except Exception as ex :
124127 logger .warn ("Error to print final log:" + str (ex ))
125128
129+ try :
130+ if remove_raw_data :
131+ logger .debug ("Remove temporary files: " + _output_dir )
132+ rmdir (_output_dir )
133+ if remove_src_data :
134+ logger .debug ("Remove Source: " + src_path )
135+ rmdir (src_path )
136+ except Exception as ex :
137+ logger .debug ("Error to remove temp files:" + str (ex ))
126138
127- def run_after_download_source (link , out_dir ):
139+
140+ def run_after_download_source (link , out_dir , remove_raw_data ):
128141 start_time = datetime .now ().strftime ('%Y%m%d_%H%M%S' )
129142 try :
130143 success , final_excel_dir , result_log = init (out_dir )
131144 temp_src_dir = os .path .join (
132- final_excel_dir , _SRC_DIR_FROM_LINK_PREFIX + start_time )
145+ _output_dir , _SRC_DIR_FROM_LINK_PREFIX + start_time )
133146
134147 logger .info ("Link to download :" + link )
135148 success , msg = cli_download_and_extract (
@@ -138,7 +151,7 @@ def run_after_download_source(link, out_dir):
138151 if success :
139152 logger .info ("Downloaded Dir:" + temp_src_dir )
140153 run (temp_src_dir , temp_src_dir ,
141- "" , final_excel_dir , False , result_log )
154+ "" , final_excel_dir , remove_raw_data , remove_raw_data , False , result_log )
142155 else :
143156 logger .error ("Download failed:" + msg )
144157 except Exception as ex :
@@ -161,12 +174,13 @@ def init(output_path=""):
161174 else :
162175 output_root_dir = _executed_path
163176
164- if not os .path .isdir (_output_dir ):
165- os .makedirs (_output_dir )
177+ Path (_output_dir ).mkdir (parents = True , exist_ok = True )
166178 _output_dir = os .path .abspath (_output_dir )
167179
168- logger , result_log = init_log (os .path .join (_output_dir , _log_file + _start_time + ".txt" ),
180+ log_dir = os .path .join (output_root_dir , "fosslight_log" )
181+ logger , result_log = init_log (os .path .join (log_dir , _log_file + _start_time + ".txt" ),
169182 True , logging .INFO , logging .DEBUG , _PKG_NAME )
183+
170184 return os .path .isdir (_output_dir ), output_root_dir , result_log
171185
172186
@@ -181,10 +195,11 @@ def main():
181195 url_to_analyze = ""
182196 _executed_path = os .getcwd ()
183197 output_dir = _executed_path
198+ remove_raw_data = True
184199
185200 try :
186201 argv = sys .argv [1 :]
187- opts , args = getopt .getopt (argv , 'hs :d:a:o:w:' )
202+ opts , args = getopt .getopt (argv , 'hrs :d:a:o:w:' )
188203 except getopt .GetoptError :
189204 print_help_msg ()
190205
@@ -204,6 +219,8 @@ def main():
204219 url_to_analyze = arg
205220 elif opt == "-o" :
206221 output_dir = os .path .abspath (arg )
222+ elif opt == "-r" :
223+ remove_raw_data = False
207224
208225 try :
209226 if not _cli_mode :
@@ -212,14 +229,14 @@ def main():
212229 timer .setDaemon (True )
213230 timer .start ()
214231 if url_to_analyze != "" :
215- run_after_download_source (url_to_analyze , output_dir )
232+ run_after_download_source (url_to_analyze , output_dir , remove_raw_data )
216233
217234 if src_path != "" or dep_path != "" :
218235 run (src_path , dep_path ,
219- dep_arguments , output_dir )
236+ dep_arguments , output_dir , remove_raw_data , False )
220237
221238 except Exception as ex :
222- print (str (ex ))
239+ logger . warning (str (ex ))
223240
224241
225242if __name__ == '__main__' :
0 commit comments