(self, command: str)
| 281 | return "".join(reversed(stack)) |
| 282 | |
| 283 | def _rewrite_scanner_command(self, command: str) -> str: |
| 284 | provider = self.scanner_provider |
| 285 | if provider is None: |
| 286 | return command |
| 287 | |
| 288 | try: |
| 289 | parts = shlex.split(command) |
| 290 | except ValueError: |
| 291 | return command |
| 292 | |
| 293 | if not parts: |
| 294 | return command |
| 295 | |
| 296 | first_token = parts[0] |
| 297 | if Path(first_token).name != "xray" and first_token != "xray": |
| 298 | return command |
| 299 | |
| 300 | executable = provider.executable.strip() or first_token |
| 301 | rewritten_parts = self._normalize_scanner_parts([executable, *provider.extra_args, *parts[1:]]) |
| 302 | rewritten_command = shlex.join(rewritten_parts) |
| 303 | |
| 304 | if provider.env: |
| 305 | env_prefix = " ".join( |
| 306 | f"{key}={shlex.quote(value)}" for key, value in sorted(provider.env.items()) |
| 307 | ) |
| 308 | rewritten_command = f"{env_prefix} {rewritten_command}" |
| 309 | |
| 310 | if provider.working_directory: |
| 311 | rewritten_command = ( |
| 312 | f"cd {shlex.quote(provider.working_directory)} && {rewritten_command}" |
| 313 | ) |
| 314 | |
| 315 | return rewritten_command |
| 316 | |
| 317 | @staticmethod |
| 318 | def _normalize_scanner_parts(parts: list[str]) -> list[str]: |
no test coverage detected