updates
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import configparser
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
from safety_schemas.models import ProjectModel
|
||||
|
||||
|
||||
PROJECT_CONFIG = ".safety-project.ini"
|
||||
PROJECT_CONFIG_SECTION = "project"
|
||||
PROJECT_CONFIG_ID = "id"
|
||||
PROJECT_CONFIG_URL = "url"
|
||||
PROJECT_CONFIG_NAME = "name"
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@dataclass
|
||||
class UnverifiedProjectModel:
|
||||
"""
|
||||
Data class representing an unverified project model.
|
||||
"""
|
||||
|
||||
id: Optional[str]
|
||||
project_path: Path
|
||||
created: bool
|
||||
name: Optional[str] = None
|
||||
url_path: Optional[str] = None
|
||||
|
||||
|
||||
def load_unverified_project_from_config(project_root: Path) -> UnverifiedProjectModel:
|
||||
"""
|
||||
Loads an unverified project from the configuration file located at the project root.
|
||||
|
||||
Args:
|
||||
project_root (Path): The root directory of the project.
|
||||
|
||||
Returns:
|
||||
UnverifiedProjectModel: An instance of UnverifiedProjectModel.
|
||||
"""
|
||||
config = configparser.ConfigParser()
|
||||
project_path = project_root / PROJECT_CONFIG
|
||||
config.read(project_path)
|
||||
id = config.get(PROJECT_CONFIG_SECTION, PROJECT_CONFIG_ID, fallback=None)
|
||||
url = config.get(PROJECT_CONFIG_SECTION, PROJECT_CONFIG_URL, fallback=None)
|
||||
name = config.get(PROJECT_CONFIG_SECTION, PROJECT_CONFIG_NAME, fallback=None)
|
||||
created = True
|
||||
if not id:
|
||||
created = False
|
||||
|
||||
return UnverifiedProjectModel(
|
||||
id=id, url_path=url, name=name, project_path=project_path, created=created
|
||||
)
|
||||
|
||||
|
||||
def save_project_info(project: ProjectModel, project_path: Path) -> bool:
|
||||
"""
|
||||
Saves the project information to the configuration file.
|
||||
|
||||
Args:
|
||||
project (ProjectModel): The ProjectModel object containing project
|
||||
information.
|
||||
project_path (Path): The path to the configuration file.
|
||||
|
||||
Returns:
|
||||
bool: True if the project information was saved successfully, False
|
||||
otherwise.
|
||||
"""
|
||||
config = configparser.ConfigParser()
|
||||
config.read(project_path)
|
||||
|
||||
if PROJECT_CONFIG_SECTION not in config.sections():
|
||||
config[PROJECT_CONFIG_SECTION] = {}
|
||||
|
||||
config[PROJECT_CONFIG_SECTION][PROJECT_CONFIG_ID] = project.id
|
||||
if project.url_path:
|
||||
config[PROJECT_CONFIG_SECTION][PROJECT_CONFIG_URL] = project.url_path
|
||||
if project.name:
|
||||
config[PROJECT_CONFIG_SECTION][PROJECT_CONFIG_NAME] = project.name
|
||||
|
||||
try:
|
||||
with open(project_path, "w") as configfile:
|
||||
config.write(configfile)
|
||||
except Exception:
|
||||
logger.exception("Error saving project info")
|
||||
return False
|
||||
|
||||
return True
|
||||
Reference in New Issue
Block a user