Source code for statick_tool.profile
"""Manages which scan levels are run for packages."""
from typing import Any, Union
import yaml
from statick_tool.package import Package
[docs]
class Profile: # pylint: disable=too-few-public-methods
"""Manages which scan levels are run for packages."""
def __init__(self, filename: str) -> None:
"""Initialize profile.
Args:
filename: Name of the profile file.
"""
if not filename:
raise ValueError(f"{filename} is not a valid file")
with open(filename, encoding="utf8") as fname:
try:
self.profile = yaml.safe_load(fname)
except yaml.YAMLError as ex:
raise ValueError("f{filename} is not a valid YAML file: {ex}") from ex
if self.profile is None:
raise ValueError(f"{filename} is empty, can't continue!")
if "default" not in self.profile:
raise ValueError(f"No 'default' key found in {filename}!")
[docs]
def get_package_level(self, package: Package) -> Union[str, Any]:
"""Get which scan level to use for a given package.
Args:
package: Package to get scan level for.
Returns:
Scan level for package.
"""
if "packages" in self.profile:
packages_profile = self.profile["packages"]
if packages_profile and package.name in packages_profile:
return packages_profile[package.name]
return self.profile["default"]