Copyright | (c) Colin Woodbury 2012 - 2019 |
---|---|
License | GPL3 |
Maintainer | Colin Woodbury <colin@fosskers.ca> |
Safe Haskell | None |
Language | Haskell2010 |
Core types and functions which belong nowhere else.
Synopsis
- data Env = Env {
- repository :: !Repository
- settings :: !Settings
- data Repository = Repository {}
- liftEither :: (Carrier sig m, Member (Error a) sig) => Either a b -> m b
- liftEitherM :: (Carrier sig m, Member (Error a) sig) => m (Either a b) -> m b
- liftMaybe :: (Carrier sig m, Member (Error a) sig) => a -> Maybe b -> m b
- liftMaybeM :: (Carrier sig m, Member (Error a) sig) => a -> m (Maybe b) -> m b
- sudo :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig) => m a -> m a
- trueRoot :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig) => m a -> m a
- foreignPackages :: IO (Set SimplePkg)
- orphans :: IO (Set PkgName)
- develPkgs :: IO (Set PkgName)
- newtype Unsatisfied = Unsatisfied (NESet Dep)
- newtype Satisfied = Satisfied (NESet Dep)
- areSatisfied :: NESet Dep -> IO (These Unsatisfied Satisfied)
- isInstalled :: PkgName -> IO (Maybe PkgName)
- checkDBLock :: Settings -> IO ()
- removePkgs :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig, Member (Lift IO) sig) => NESet PkgName -> m ()
- partitionPkgs :: NonEmpty (NESet Package) -> ([Prebuilt], [NESet Buildable])
- packageBuildable :: Settings -> Buildable -> IO Package
- notify :: Settings -> Doc AnsiStyle -> IO ()
- warn :: Settings -> Doc AnsiStyle -> IO ()
- scold :: Settings -> Doc AnsiStyle -> IO ()
- report :: (Carrier sig m, Member (Reader Env) sig, Member (Lift IO) sig) => (Doc AnsiStyle -> Doc AnsiStyle) -> (Language -> Doc AnsiStyle) -> NonEmpty PkgName -> m ()
Types
The complete Aura runtime environment. Repository
has internal caches
instantiated in IO
, while Settings
is mostly static and derived from
command-line arguments.
Env | |
|
data Repository Source #
A Repository
is a place where packages may be fetched from. Multiple
repositories can be combined with the Semigroup
instance. Checks packages
in batches for efficiency.
Instances
Semigroup Repository Source # | |
Defined in Aura.Core (<>) :: Repository -> Repository -> Repository # sconcat :: NonEmpty Repository -> Repository # stimes :: Integral b => b -> Repository -> Repository # |
liftEither :: (Carrier sig m, Member (Error a) sig) => Either a b -> m b Source #
Lift a common return type into the `fused-effects` world. Usually used
after a pacman
call.
liftEitherM :: (Carrier sig m, Member (Error a) sig) => m (Either a b) -> m b Source #
Like liftEither
, but the Either
can be embedded in something else,
usually a Monad
.
liftMaybe :: (Carrier sig m, Member (Error a) sig) => a -> Maybe b -> m b Source #
Like liftEither
, but for Maybe
.
liftMaybeM :: (Carrier sig m, Member (Error a) sig) => a -> m (Maybe b) -> m b Source #
Like liftEitherM
, but for Maybe
.
User Privileges
sudo :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig) => m a -> m a Source #
Action won't be allowed unless user is root, or using sudo.
trueRoot :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig) => m a -> m a Source #
Stop the user if they are the true root. Building as root isn't allowed since makepkg v4.2.
Querying the Package Database
foreignPackages :: IO (Set SimplePkg) Source #
A list of non-prebuilt packages installed on the system. `-Qm` yields a list of sorted values.
orphans :: IO (Set PkgName) Source #
Packages marked as a dependency, yet are required by no other package.
develPkgs :: IO (Set PkgName) Source #
Any package whose name is suffixed by git, hg, svn, darcs, cvs, or bzr.
newtype Unsatisfied Source #
Depedencies which are not installed, or otherwise provided by some installed package.
areSatisfied :: NESet Dep -> IO (These Unsatisfied Satisfied) Source #
Similar to isSatisfied
, but dependencies are checked in a batch, since
-T
can accept multiple inputs.
isInstalled :: PkgName -> IO (Maybe PkgName) Source #
Returns what it was given if the package is already installed. Reasoning: Using raw bools can be less expressive.
checkDBLock :: Settings -> IO () Source #
Block further action until the database is free.
Misc. Package Handling
removePkgs :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig, Member (Lift IO) sig) => NESet PkgName -> m () Source #
An -Rsu
call.
partitionPkgs :: NonEmpty (NESet Package) -> ([Prebuilt], [NESet Buildable]) Source #
Partition a list of packages into pacman and buildable groups. Yes, this is
the correct signature. As far as this function (in isolation) is concerned,
there is no way to guarantee that the list of NESet
s will itself be
non-empty.
packageBuildable :: Settings -> Buildable -> IO Package Source #
Package a Buildable, running the customization handler first.