diff --git a/src/bin/pkgman/RepositoryBuilder.cpp b/src/bin/pkgman/RepositoryBuilder.cpp index d056d6e356..251f11bbd3 100644 --- a/src/bin/pkgman/RepositoryBuilder.cpp +++ b/src/bin/pkgman/RepositoryBuilder.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -47,6 +48,20 @@ RepositoryBuilder::RepositoryBuilder(BSolverRepository& repository, } +RepositoryBuilder::RepositoryBuilder(BSolverRepository& repository, + const BRepositoryCache& cache, const BString& errorName) + : + fRepository(repository), + fErrorName(errorName.IsEmpty() ? cache.Info().Name() : errorName), + fPackagePaths(NULL) +{ + status_t error = fRepository.SetTo(cache); + if (error != B_OK) + DIE(error, "failed to init %s repository", fErrorName.String()); + fErrorName = fRepository.Name(); +} + + RepositoryBuilder& RepositoryBuilder::SetPackagePathMap(PackagePathMap* packagePaths) { diff --git a/src/bin/pkgman/RepositoryBuilder.h b/src/bin/pkgman/RepositoryBuilder.h index d3c72ad9a6..b3d4166c2c 100644 --- a/src/bin/pkgman/RepositoryBuilder.h +++ b/src/bin/pkgman/RepositoryBuilder.h @@ -33,6 +33,9 @@ public: const BString& errorName = BString()); RepositoryBuilder(BSolverRepository& repository, const BRepositoryConfig& config); + RepositoryBuilder(BSolverRepository& repository, + const BRepositoryCache& cache, + const BString& errorName = BString()); RepositoryBuilder& SetPackagePathMap(PackagePathMap* packagePaths);