definition:
|
addPackageToRepository :: Config -> String -> Bool -> Bool -> ErrorLogger ()
addPackageToRepository cfg pkgdir force cpdir = do
dirExists <- liftIOEL $ doesDirectoryExist pkgdir
if dirExists
then do pkgSpec <- loadPackageSpec pkgdir
copyPackage pkgSpec
logInfo $ "Package in directory '" ++ pkgdir ++
"' installed into local repository"
else logCritical $ "Directory '" ++ pkgdir ++ "' does not exist."
where
copyPackage pkg = do
let pkgIndexDir = name pkg </> showVersion (version pkg)
pkgRepositoryDir = repositoryDir cfg </> pkgIndexDir
pkgInstallDir = packageInstallDir cfg </> packageId pkg
exrepodir <- liftIOEL $ doesDirectoryExist pkgRepositoryDir
when (exrepodir && not force) $ error $
"Package repository directory '" ++
pkgRepositoryDir ++ "' already exists!\n"
expkgdir <- liftIOEL $ doesDirectoryExist pkgInstallDir
when expkgdir $
if force then liftIOEL $ removeDirectoryComplete pkgInstallDir
else error $ "Package installation directory '" ++
pkgInstallDir ++ "' already exists!\n"
logInfo $ "Create directory: " ++ pkgRepositoryDir
liftIOEL $ do
createDirectoryIfMissing True pkgRepositoryDir
copyFile (pkgdir </> packageSpecFile)
(pkgRepositoryDir </> packageSpecFile)
when cpdir $ do
liftIOEL $ copyDirectory pkgdir pkgInstallDir
inDirectoryEL pkgInstallDir $ cleanPackage cfg Debug
if exrepodir then updatePackageInRepositoryCache cfg pkg
else addPackageToRepositoryCache cfg pkg
|
demand:
|
no demanded arguments
|
deterministic:
|
deterministic operation
|
documentation:
|
------------------------------------------------------------------------------
--- Adds a package stored in the given directory to the repository index.
--- If the argument `force` is true, overwrite an already existing package.
--- If the argument `cpdir` is true, copy also the complete directory
--- into the local package installation store.
|
failfree:
|
<FAILING>
|
indeterministic:
|
referentially transparent operation
|
infix:
|
no fixity defined
|
iotype:
|
{(_,_,_,_) |-> _}
|
name:
|
addPackageToRepository
|
precedence:
|
no precedence defined
|
result-values:
|
_
|
signature:
|
CPM.Config.Config -> String -> Prelude.Bool -> Prelude.Bool
-> CPM.ErrorLogger.ErrorLogger ()
|
solution-complete:
|
operation might suspend on free variables
|
terminating:
|
possibly non-terminating
|
totally-defined:
|
possibly non-reducible on same data term
|