Skip to content

Index

πŸ€– AI-Generated Content

This documentation was generated with AI assistance and is still being audited. Some, or potentially a lot, of this information may be inaccurate. Learn more.

flavor.helpers

Classes

HelperInfo dataclass

HelperInfo(
    name: str,
    path: Path,
    type: str,
    language: str,
    size: int,
    checksum: str | None = None,
    version: str | None = None,
    built_from: Path | None = None,
)

Information about a helper binary.

HelperManager

HelperManager()

Manages Flavor helper binaries (launchers and builders).

Initialize the helper manager.

Source code in flavor/helpers/manager.py
def __init__(self) -> None:
    """Initialize the helper manager."""
    self.flavor_root = Path(__file__).parent.parent.parent.parent
    self.helpers_dir = self.flavor_root / "dist"
    self.helpers_bin = self.helpers_dir / "bin"

    # Also check XDG cache location for installed helpers
    xdg_cache = os.environ.get("XDG_CACHE_HOME", str(Path("~/.cache").expanduser()))
    self.installed_helpers_bin = Path(xdg_cache) / "flavor" / "helpers" / "bin"

    # Source directories are in src/<language>
    self.go_src_dir = self.flavor_root / "src" / "flavor-go"
    self.rust_src_dir = self.flavor_root / "src" / "flavor-rs"

    # Ensure helpers directories exist
    ensure_dir(self.helpers_dir)
    ensure_dir(self.helpers_bin)

    # Detect current platform using centralized utility
    self.current_platform = get_platform_string()

    # Binary loader for complex operations
    from flavor.helpers.binary_loader import BinaryLoader

    self._binary_loader = BinaryLoader(self)
Functions
build_helpers
build_helpers(
    language: str | None = None, force: bool = False
) -> list[Path]

Build helper binaries from source.

Source code in flavor/helpers/manager.py
def build_helpers(self, language: str | None = None, force: bool = False) -> list[Path]:
    """Build helper binaries from source."""
    return self._binary_loader.build_helpers(language, force)
clean_helpers
clean_helpers(language: str | None = None) -> list[Path]

Clean built helper binaries.

Source code in flavor/helpers/manager.py
def clean_helpers(self, language: str | None = None) -> list[Path]:
    """Clean built helper binaries."""
    return self._binary_loader.clean_helpers(language)
get_helper
get_helper(name: str) -> Path

Get path to a helper binary.

Source code in flavor/helpers/manager.py
def get_helper(self, name: str) -> Path:
    """Get path to a helper binary."""
    return self._binary_loader.get_helper(name)
get_helper_info
get_helper_info(name: str) -> HelperInfo | None

Get detailed information about a specific helper.

Source code in flavor/helpers/manager.py
def get_helper_info(self, name: str) -> HelperInfo | None:
    """Get detailed information about a specific helper."""
    helper_path = self.helpers_bin / name
    if helper_path.exists():
        return self._get_helper_info(helper_path)

    # Try to find by partial name
    helpers = self.list_helpers()
    for helper_list in [helpers["launchers"], helpers["builders"]]:
        for helper in helper_list:
            if name in helper.name:
                return helper

    return None
list_helpers
list_helpers(
    platform_filter: bool = False,
) -> dict[str, list[HelperInfo]]

List all available helpers.

Parameters:

Name Type Description Default
platform_filter bool

Only show helpers compatible with current platform

False

Returns:

Type Description
dict[str, list[HelperInfo]]

Dict with keys 'launchers' and 'builders', each containing HelperInfo lists

Source code in flavor/helpers/manager.py
def list_helpers(self, platform_filter: bool = False) -> dict[str, list[HelperInfo]]:
    """List all available helpers.

    Args:
        platform_filter: Only show helpers compatible with current platform

    Returns:
        Dict with keys 'launchers' and 'builders', each containing HelperInfo lists
    """
    existing_names: set[str] = set()
    all_helpers: list[HelperInfo] = []

    # Search for helpers in bin directory
    all_helpers.extend(self._scan_helpers_dir(self.helpers_bin, platform_filter, existing_names))

    # Also check embedded helpers from wheel installation
    embedded_bin = Path(__file__).parent / "bin"
    all_helpers.extend(self._scan_helpers_dir(embedded_bin, platform_filter, existing_names))

    return self._categorize_helpers(all_helpers)
test_helpers
test_helpers(language: str | None = None) -> dict[str, Any]

Test helper binaries.

Source code in flavor/helpers/manager.py
def test_helpers(self, language: str | None = None) -> dict[str, Any]:
    """Test helper binaries."""
    return self._binary_loader.test_helpers(language)