Skip to content

Commit af8bb6e

Browse files
authored
Merge pull request #34 from fosslight/develop
Run fosslight_source without installing it
2 parents 74014e9 + 4d7eeb9 commit af8bb6e

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

src/fosslight_scanner/fosslight_scanner.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
from shutil import rmtree as rmdir
1414
from datetime import datetime
1515
from fosslight_binary import binary_analysis
16-
from fosslight_source.cli import run_all_scanners as source_analysis
17-
from fosslight_source.cli import create_report_file
1816
from fosslight_dependency.run_dependency_scanner import run_dependency_scanner
1917
from fosslight_util.download import cli_download_and_extract
2018
from ._get_input import get_input_mode
@@ -26,6 +24,13 @@
2624
from .common import (copy_file, call_analysis_api,
2725
overwrite_excel, extract_name_from_link)
2826
from fosslight_util.write_excel import merge_excels
27+
import subprocess
28+
fosslight_source_installed = True
29+
try:
30+
from fosslight_source.cli import run_all_scanners as source_analysis
31+
from fosslight_source.cli import create_report_file
32+
except ModuleNotFoundError:
33+
fosslight_source_installed = False
2934

3035
OUTPUT_EXCEL_PREFIX = "FOSSLight-Report_"
3136
OUTPUT_JSON_PREFIX = "Opossum_input_"
@@ -128,14 +133,24 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
128133

129134
if run_src:
130135
try:
131-
success, result = call_analysis_api(src_path, "Source Analysis",
132-
-1, source_analysis,
133-
abs_path,
134-
os.path.join(_output_dir, output_files["SRC"]),
135-
False, num_cores, True)
136-
if success:
137-
sheet_list["SRC_FL_Source"] = [scan_item.get_row_to_print() for scan_item in result[2]]
138-
create_report_file(0, result[2], result[3], 'all', True, _output_dir, output_files["SRC"], "")
136+
if fosslight_source_installed:
137+
src_output = os.path.join(_output_dir, output_files["SRC"])
138+
success, result = call_analysis_api(src_path, "Source Analysis",
139+
-1, source_analysis,
140+
abs_path,
141+
src_output,
142+
False, num_cores, True)
143+
if success:
144+
sheet_list["SRC_FL_Source"] = [scan_item.get_row_to_print() for scan_item in result[2]]
145+
create_report_file(0, result[2], result[3], 'all', True, _output_dir, output_files["SRC"], "")
146+
else: # Run fosslight_source by using docker image
147+
src_output = os.path.join("output", output_files["SRC"])
148+
output_rel_path = os.path.relpath(abs_path, os.getcwd())
149+
command = f"docker run -it -v {_output_dir}:/app/output "\
150+
f"fosslight -p {output_rel_path} -o {src_output}.xlsx"
151+
command_result = subprocess.run(command.split(' '), stdout=subprocess.PIPE, text=True)
152+
logger.info(f"Source Analysis Result:{command_result.stdout}")
153+
139154
except Exception as ex:
140155
logger.warning(f"Failed to run source analysis: {ex}")
141156

0 commit comments

Comments
 (0)