Files
Hotel-Booking/Backend/venv/lib/python3.12/site-packages/safety/tool/main.py
Iliyan Angelov 62c1fe5951 updates
2025-12-01 06:50:10 +02:00

116 lines
3.1 KiB
Python

from typing import Any, Dict, List, Tuple
import os.path
from pathlib import Path
from typing import Optional
from safety.constants import USER_CONFIG_DIR
from safety.tool.utils import (
NpmConfigurator,
NpmProjectConfigurator,
PipConfigurator,
PipRequirementsConfigurator,
PoetryConfigurator,
PoetryPyprojectConfigurator,
UvConfigurator,
UvPyprojectConfigurator,
is_os_supported,
)
from safety_schemas.models.events.types import ToolType
from .interceptors import create_interceptor
import logging
logger = logging.getLogger(__name__)
def find_local_tool_files(directory: Path) -> List[Path]:
configurators = [
PipRequirementsConfigurator(),
PoetryPyprojectConfigurator(),
UvPyprojectConfigurator(),
NpmProjectConfigurator(),
]
results = []
for file_name in os.listdir(directory):
if os.path.isfile(file_name):
file = Path(file_name)
for configurator in configurators:
if configurator.is_supported(file):
results.append(file)
return results
def configure_system(org_slug: Optional[str]) -> List[Tuple[ToolType, Optional[Path]]]:
configurators: List[Tuple[ToolType, Any, Dict[str, Any]]] = [
(ToolType.PIP, PipConfigurator(), {"org_slug": org_slug}),
(ToolType.POETRY, PoetryConfigurator(), {"org_slug": org_slug}),
(ToolType.UV, UvConfigurator(), {"org_slug": org_slug}),
(ToolType.NPM, NpmConfigurator(), {"org_slug": org_slug}),
]
results = []
for tool_type, configurator, kwargs in configurators:
result = configurator.configure(**kwargs)
results.append((tool_type, result))
return results
def reset_system():
configurators = [
PipConfigurator(),
PoetryConfigurator(),
UvConfigurator(),
NpmConfigurator(),
]
for configurator in configurators:
configurator.reset()
def configure_alias() -> Optional[List[Tuple[ToolType, Optional[Path]]]]:
if not is_os_supported():
logger.warning("OS not supported for alias configuration.")
return None
interceptor = create_interceptor()
result = interceptor.install_interceptors()
if result:
config = Path(f"{USER_CONFIG_DIR}/.safety_profile")
return [
(ToolType.PIP, config),
(ToolType.POETRY, config),
(ToolType.UV, config),
(ToolType.NPM, config),
]
return [
(ToolType.PIP, None),
(ToolType.POETRY, None),
(ToolType.UV, None),
(ToolType.NPM, None),
]
def configure_local_directory(
directory: Path, org_slug: Optional[str], project_id: Optional[str]
):
configurators = [
PipRequirementsConfigurator(),
PoetryPyprojectConfigurator(),
UvPyprojectConfigurator(),
NpmProjectConfigurator(),
]
for file_name in os.listdir(directory):
if os.path.isfile(file_name):
file = Path(file_name)
for configurator in configurators:
if configurator.is_supported(file):
configurator.configure(file, org_slug, project_id)