Module CPM.Repository.Select

Some queries on the repository cache.

Author: Michael Hanus

Version: December 2020

Summary of exported operations:

searchNameSynopsisModules :: Config -> String -> ErrorLogger [Package]  Deterministic 
Returns the packages of the repository containing a given string in the name, synopsis, or exported modules.
searchExportedModules :: Config -> String -> ErrorLogger [Package]  Deterministic 
Returns the packages of the repository containing a given module in the list of exported modules.
searchExecutable :: Config -> String -> ErrorLogger [Package]  Deterministic 
Returns the packages of the repository containing a given string in the name of the executable.
getRepositoryWithNameVersionSynopsis :: Config -> ErrorLogger Repository  Deterministic 
Returns the complete repository where in each package the name, version, synopsis, and compilerCompatibility is set.
getRepositoryWithNameVersionSynopsisDeps :: Config -> ErrorLogger Repository  Deterministic 
Returns the complete repository where in each package the name, version, synopsis, dependencies and compilerCompatibility is set.
getRepositoryWithNameVersionCategory :: Config -> ErrorLogger Repository  Deterministic 
Returns the complete repository where in each package the name, version, category, and compilerCompatibility is set.
getBaseRepository :: Config -> ErrorLogger Repository  Deterministic 
Returns the complete repository where in each package the name, version, dependencies, and compilerCompatibility is set.
getRepoForPackageSpec :: Config -> Package -> ErrorLogger Repository  Deterministic 
Returns the repository containing all packages and dependencies (in all versions) mentioned in the given package specification.
getRepoForPackages :: Config -> [String] -> ErrorLogger Repository  Deterministic 
Returns the repository containing only packages of the second argument and all the packages on which they depend (including all versions).
getAllPackageVersions :: Config -> String -> Bool -> ErrorLogger [Package]  Deterministic 
Retrieves all versions of a package with a given name from the repository.
getPackageVersion :: Config -> String -> (Int,Int,Int,Maybe String) -> ErrorLogger (Maybe Package)  Deterministic 
Retrieves a package with a given name and version from the repository.
addPackageToRepositoryCache :: Config -> Package -> ErrorLogger ()  Deterministic 
Adds a new package to the repository cache.
updatePackageInRepositoryCache :: Config -> Package -> ErrorLogger ()  Deterministic 
Updates an existing package in the repository cache.

Exported operations:

searchNameSynopsisModules :: Config -> String -> ErrorLogger [Package]  Deterministic 

Returns the packages of the repository containing a given string in the name, synopsis, or exported modules. In each package, the name, version, synopsis, and compilerCompatibility is set.

searchExportedModules :: Config -> String -> ErrorLogger [Package]  Deterministic 

Returns the packages of the repository containing a given module in the list of exported modules. In each package, the name, version, synopsis, compilerCompatibility, and exportedModules is set.

searchExecutable :: Config -> String -> ErrorLogger [Package]  Deterministic 

Returns the packages of the repository containing a given string in the name of the executable. In each package, the name, version, synopsis, compilerCompatibility, and executableSpec is set.

getRepositoryWithNameVersionSynopsis :: Config -> ErrorLogger Repository  Deterministic 

Returns the complete repository where in each package the name, version, synopsis, and compilerCompatibility is set.

getRepositoryWithNameVersionSynopsisDeps :: Config -> ErrorLogger Repository  Deterministic 

Returns the complete repository where in each package the name, version, synopsis, dependencies and compilerCompatibility is set.

getRepositoryWithNameVersionCategory :: Config -> ErrorLogger Repository  Deterministic 

Returns the complete repository where in each package the name, version, category, and compilerCompatibility is set.

getBaseRepository :: Config -> ErrorLogger Repository  Deterministic 

Returns the complete repository where in each package the name, version, dependencies, and compilerCompatibility is set. The information is read either from the cache DB or from the cache file.

getRepoForPackageSpec :: Config -> Package -> ErrorLogger Repository  Deterministic 

Returns the repository containing all packages and dependencies (in all versions) mentioned in the given package specification. In each package the name, version, dependencies, and compilerCompatibility is set. The information is read either from the cache DB or from the cache file.

getRepoForPackages :: Config -> [String] -> ErrorLogger Repository  Deterministic 

Returns the repository containing only packages of the second argument and all the packages on which they depend (including all versions). In each package the name, version, dependencies, and compilerCompatibility is set. The information is read either from the cache DB or from the cache file.

getAllPackageVersions :: Config -> String -> Bool -> ErrorLogger [Package]  Deterministic 

Retrieves all versions of a package with a given name from the repository.

Example call:
(getAllPackageVersions cfg pkgname pre)
Parameters:
  • cfg : the current CPM configuration
  • pkgname : the package name to be retrieved
  • pre : should pre-release versions be included?

getPackageVersion :: Config -> String -> (Int,Int,Int,Maybe String) -> ErrorLogger (Maybe Package)  Deterministic 

Retrieves a package with a given name and version from the repository.

Example call:
(getPackageVersion cfg pkgname ver)
Parameters:
  • cfg : the current CPM configuration
  • pkgname : the package name to be retrieved
  • ver : the requested version of the package

addPackageToRepositoryCache :: Config -> Package -> ErrorLogger ()  Deterministic 

Adds a new package to the repository cache. In the file-based implementation, we simply clean the cache files.

updatePackageInRepositoryCache :: Config -> Package -> ErrorLogger ()  Deterministic 

Updates an existing package in the repository cache. In the file-based implementation, we simply clean the cache files.