2424from scanpipe import pipes
2525from scanpipe .pipelines import Pipeline
2626from scanpipe .pipes import d2d
27+ from scanpipe .pipes import d2d_config
2728from scanpipe .pipes import flag
2829from scanpipe .pipes import input
2930from scanpipe .pipes import matchcode
@@ -64,6 +65,8 @@ def steps(cls):
6465 cls .flag_empty_files ,
6566 cls .flag_whitespace_files ,
6667 cls .flag_ignored_resources ,
68+ cls .load_ecosystem_config ,
69+ cls .map_ruby ,
6770 cls .map_about_files ,
6871 cls .map_checksum ,
6972 cls .match_archives_to_purldb ,
@@ -72,6 +75,7 @@ def steps(cls):
7275 cls .map_jar_to_source ,
7376 cls .map_javascript ,
7477 cls .map_javascript_symbols ,
78+ cls .map_javascript_strings ,
7579 cls .map_elf ,
7680 cls .map_macho ,
7781 cls .map_winpe ,
@@ -95,33 +99,6 @@ def steps(cls):
9599 cls .create_local_files_packages ,
96100 )
97101
98- purldb_package_extensions = [".jar" , ".war" , ".zip" ]
99- purldb_resource_extensions = [
100- ".map" ,
101- ".js" ,
102- ".mjs" ,
103- ".ts" ,
104- ".d.ts" ,
105- ".jsx" ,
106- ".tsx" ,
107- ".css" ,
108- ".scss" ,
109- ".less" ,
110- ".sass" ,
111- ".soy" ,
112- ".class" ,
113- ]
114- doc_extensions = [
115- ".pdf" ,
116- ".doc" ,
117- ".docx" ,
118- ".ppt" ,
119- ".pptx" ,
120- ".tex" ,
121- ".odt" ,
122- ".odp" ,
123- ]
124-
125102 def get_inputs (self ):
126103 """Locate the ``from`` and ``to`` input files."""
127104 self .from_files , self .to_files = d2d .get_inputs (self .project )
@@ -156,6 +133,15 @@ def flag_whitespace_files(self):
156133 """Flag whitespace files with size less than or equal to 100 byte as ignored."""
157134 d2d .flag_whitespace_files (project = self .project )
158135
136+ def load_ecosystem_config (self ):
137+ """Load ecosystem specific configurations for d2d steps for selected options."""
138+ d2d_config .load_ecosystem_config (pipeline = self , options = self .selected_groups )
139+
140+ @optional_step ("Ruby" )
141+ def map_ruby (self ):
142+ """Load Ruby specific configurations for d2d steps."""
143+ pass
144+
159145 def map_about_files (self ):
160146 """Map ``from/`` .ABOUT files to their related ``to/`` resources."""
161147 d2d .map_about_files (project = self .project , logger = self .log )
@@ -172,7 +158,7 @@ def match_archives_to_purldb(self):
172158
173159 d2d .match_purldb_resources (
174160 project = self .project ,
175- extensions = self .purldb_package_extensions ,
161+ extensions = self .matchable_package_extensions ,
176162 matcher_func = d2d .match_purldb_package ,
177163 logger = self .log ,
178164 )
@@ -205,6 +191,11 @@ def map_javascript_symbols(self):
205191 """Map deployed JavaScript, TypeScript to its sources using symbols."""
206192 d2d .map_javascript_symbols (project = self .project , logger = self .log )
207193
194+ @optional_step ("JavaScript" )
195+ def map_javascript_strings (self ):
196+ """Map deployed JavaScript, TypeScript to its sources using string literals."""
197+ d2d .map_javascript_strings (project = self .project , logger = self .log )
198+
208199 @optional_step ("Elf" )
209200 def map_elf (self ):
210201 """Map ELF binaries to their sources using dwarf paths and symbols."""
@@ -258,7 +249,7 @@ def match_resources_to_purldb(self):
258249
259250 d2d .match_purldb_resources (
260251 project = self .project ,
261- extensions = self .purldb_resource_extensions ,
252+ extensions = self .matchable_resource_extensions ,
262253 matcher_func = d2d .match_purldb_resource ,
263254 logger = self .log ,
264255 )
@@ -296,6 +287,7 @@ def flag_mapped_resources_archives_and_ignored_directories(self):
296287 def perform_house_keeping_tasks (self ):
297288 """
298289 On deployed side
290+ - Ignore specific files based on ecosystem based configurations.
299291 - PurlDB match files with ``no-java-source`` and empty status,
300292 if no match is found update status to ``requires-review``.
301293 - Update status for uninteresting files.
@@ -306,9 +298,14 @@ def perform_house_keeping_tasks(self):
306298 """
307299 d2d .match_resources_with_no_java_source (project = self .project , logger = self .log )
308300 d2d .handle_dangling_deployed_legal_files (project = self .project , logger = self .log )
301+ d2d .ignore_unmapped_resources_from_config (
302+ project = self .project ,
303+ patterns_to_ignore = self .ecosystem_config .deployed_resource_path_exclusions ,
304+ logger = self .log ,
305+ )
309306 d2d .match_unmapped_resources (
310307 project = self .project ,
311- matched_extensions = self .purldb_resource_extensions ,
308+ matched_extensions = self .ecosystem_config . matchable_resource_extensions ,
312309 logger = self .log ,
313310 )
314311 d2d .flag_undeployed_resources (project = self .project )
@@ -344,5 +341,5 @@ def flag_deployed_from_resources_with_missing_license(self):
344341 """Update the status for deployed from files with missing license."""
345342 d2d .flag_deployed_from_resources_with_missing_license (
346343 self .project ,
347- doc_extensions = self .doc_extensions ,
344+ doc_extensions = self .ecosystem_config . doc_extensions ,
348345 )
0 commit comments