Advanced usage

Depending on the goal the package can be used in different ways. Nevertheless, in the most cases you will need some basic classes

from pathlib import Path

from ahriman.core.configuration import Configuration
from ahriman.core.database import SQLite
from ahriman.models.repository_id import RepositoryId

repository_id = RepositoryId("x86_64", "aur-clone")
configuration = Configuration.from_path(Path("/etc/ahriman.ini"), repository_id)
database = SQLite.load(configuration)

At this point there are configuration and database instances which can be used later at any time anywhere, e.g.

# instance of ``RepositoryPaths`` class
paths = configuration.repository_paths

Almost all actions are wrapped by ahriman.core.repository.Repository class

from ahriman.core.repository import Repository
from ahriman.models.pacman_synchronization import PacmanSynchronization

repository = Repository(repository_id, configuration, database,
                        report=True, refresh_pacman_database=PacmanSynchronization.Disabled)

And the repository instance can be used to perform repository maintenance

build_result = repository.process_build(known_packages)
built_packages = repository.packages_built()
update_result = repository.process_update(built_packages)

repository.triggers.on_result(update_result, repository.packages())

For the more info please refer to the classes documentation.