{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
module Distribution.Uusi.Core
( uusiGenericPackageDescription,
allToAnyVersion,
removeByName,
overwriteByName,
replaceByName,
buildableByName,
optionsByName,
addOptionsForAll,
removeOptionsForAll,
)
where
import Data.List ((\\))
import Data.Maybe (catMaybes)
import qualified Data.Text as T
import Distribution.Compiler (PerCompilerFlavor (..))
import Distribution.Types.CondTree (CondTree, mapTreeConstrs, mapTreeData)
import Distribution.Types.Dependency (Dependency)
import Distribution.Types.Lens
import Distribution.Types.PackageName (PackageName, unPackageName)
import Distribution.Types.UnqualComponentName
import Distribution.Types.VersionRange (VersionRange, anyVersion)
import Distribution.Uusi.Types
import Distribution.Uusi.Utils
import Distribution.Uusi.Lens
allToAnyVersion :: Uusi
allToAnyVersion :: Uusi
allToAnyVersion = Text -> (PackageName -> Bool) -> VersionRange -> Uusi
forall tag.
tag -> (PackageName -> Bool) -> VersionRange -> Action tag
SetVersion Text
"All dependencies" (Bool -> PackageName -> Bool
forall a b. a -> b -> a
const Bool
True) VersionRange
anyVersion
removeByName :: PackageName -> Uusi
removeByName :: PackageName -> Uusi
removeByName PackageName
name = Text -> (PackageName -> Bool) -> Uusi
forall tag. tag -> (PackageName -> Bool) -> Action tag
Remove (PackageName -> String
unPackageName PackageName
name String -> (String -> Text) -> Text
forall a b. a -> (a -> b) -> b
|> String -> Text
T.pack) (PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
name)
overwriteByName :: PackageName -> VersionRange -> Uusi
overwriteByName :: PackageName -> VersionRange -> Uusi
overwriteByName PackageName
name = Text -> (PackageName -> Bool) -> VersionRange -> Uusi
forall tag.
tag -> (PackageName -> Bool) -> VersionRange -> Action tag
SetVersion (PackageName -> String
unPackageName PackageName
name String -> (String -> Text) -> Text
forall a b. a -> (a -> b) -> b
|> String -> Text
T.pack) (PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
name)
replaceByName :: PackageName -> [(PackageName, VersionRange)] -> Uusi
replaceByName :: PackageName -> [(PackageName, VersionRange)] -> Uusi
replaceByName PackageName
name [(PackageName, VersionRange)]
t = Text -> (PackageName -> Bool) -> [VersionedPackage] -> Uusi
forall tag.
tag -> (PackageName -> Bool) -> [VersionedPackage] -> Action tag
Replace (PackageName -> String
unPackageName PackageName
name String -> (String -> Text) -> Text
forall a b. a -> (a -> b) -> b
|> String -> Text
T.pack) (PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
== PackageName
name) ((PackageName -> VersionRange -> VersionedPackage)
-> (PackageName, VersionRange) -> VersionedPackage
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry PackageName -> VersionRange -> VersionedPackage
VersionedPackage ((PackageName, VersionRange) -> VersionedPackage)
-> [(PackageName, VersionRange)] -> [VersionedPackage]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(PackageName, VersionRange)]
t)
buildableByName :: UnqualComponentName -> Bool -> Uusi
buildableByName :: UnqualComponentName -> Bool -> Uusi
buildableByName UnqualComponentName
name = Text -> (UnqualComponentName -> Bool) -> Bool -> Uusi
forall tag.
tag -> (UnqualComponentName -> Bool) -> Bool -> Action tag
SetBuildable (UnqualComponentName -> String
unUnqualComponentName UnqualComponentName
name String -> (String -> Text) -> Text
forall a b. a -> (a -> b) -> b
|> String -> Text
T.pack) (UnqualComponentName -> UnqualComponentName -> Bool
forall a. Eq a => a -> a -> Bool
== UnqualComponentName
name)
optionsByName :: UnqualComponentName -> Op [String] -> Uusi
optionsByName :: UnqualComponentName -> Op [String] -> Uusi
optionsByName UnqualComponentName
name = Text -> (UnqualComponentName -> Bool) -> Op [String] -> Uusi
forall tag.
tag -> (UnqualComponentName -> Bool) -> Op [String] -> Action tag
ModifyBuiltOptions (UnqualComponentName -> String
unUnqualComponentName UnqualComponentName
name String -> (String -> Text) -> Text
forall a b. a -> (a -> b) -> b
|> String -> Text
T.pack) (UnqualComponentName -> UnqualComponentName -> Bool
forall a. Eq a => a -> a -> Bool
== UnqualComponentName
name)
addOptionsForAll :: [String] -> Uusi
addOptionsForAll :: [String] -> Uusi
addOptionsForAll [String]
opts =
Text -> (UnqualComponentName -> Bool) -> Op [String] -> Uusi
forall tag.
tag -> (UnqualComponentName -> Bool) -> Op [String] -> Action tag
ModifyBuiltOptions
(Text
"Add " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack ([String] -> String
forall a. Show a => a -> String
show [String]
opts) Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" to all components and the library")
(Bool -> UnqualComponentName -> Bool
forall a b. a -> b -> a
const Bool
True)
([String] -> Op [String]
forall a. Semigroup a => a -> a -> a
<> [String]
opts)
removeOptionsForAll :: [String] -> Uusi
removeOptionsForAll :: [String] -> Uusi
removeOptionsForAll [String]
opts =
Text -> (UnqualComponentName -> Bool) -> Op [String] -> Uusi
forall tag.
tag -> (UnqualComponentName -> Bool) -> Op [String] -> Action tag
ModifyBuiltOptions
(Text
"Remove " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
T.pack ([String] -> String
forall a. Show a => a -> String
show [String]
opts) Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" from all components and the library")
(Bool -> UnqualComponentName -> Bool
forall a b. a -> b -> a
const Bool
True)
((String -> Bool) -> Op [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (String -> [String] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [String]
opts))
uusiRange' :: HasVersionedPackage a => Uusi -> Op a
uusiRange' :: Uusi -> Op a
uusiRange' (SetVersion Text
_ PackageName -> Bool
p VersionRange
range) a
x
| PackageName -> Bool
p (PackageName -> Bool) -> PackageName -> Bool
forall a b. (a -> b) -> a -> b
$ a
x a -> Getting PackageName a PackageName -> PackageName
forall s a. s -> Getting a s a -> a
^. Getting PackageName a PackageName
forall a. HasVersionedPackage a => Lens' a PackageName
myPkgName = a
x a -> Op a -> a
forall a b. a -> (a -> b) -> b
& LensLike Identity a a VersionRange VersionRange
forall a. HasVersionedPackage a => Lens' a VersionRange
myVersionRange LensLike Identity a a VersionRange VersionRange
-> VersionRange -> Op a
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VersionRange
range
| Bool
otherwise = a
x
uusiRange' Uusi
_ a
x = a
x
uusiRange :: HasVersionedPackage a => Uusis -> Op a
uusiRange :: Uusis -> Op a
uusiRange Uusis
actions = [Op a] -> Op a
forall a. [Op a] -> Op a
chain ([Op a] -> Op a) -> [Op a] -> Op a
forall a b. (a -> b) -> a -> b
<| Uusi -> Op a
forall a. HasVersionedPackage a => Uusi -> Op a
uusiRange' (Uusi -> Op a) -> Uusis -> [Op a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Uusis
actions
uusiReplace' :: HasVersionedPackage a => Uusi -> a -> [a]
uusiReplace' :: Uusi -> a -> [a]
uusiReplace' (Replace Text
_ PackageName -> Bool
p [VersionedPackage]
targets) a
x
| PackageName -> Bool
p (PackageName -> Bool) -> PackageName -> Bool
forall a b. (a -> b) -> a -> b
$ a
x a -> Getting PackageName a PackageName -> PackageName
forall s a. s -> Getting a s a -> a
^. Getting PackageName a PackageName
forall a. HasVersionedPackage a => Lens' a PackageName
myPkgName =
( \VersionedPackage
t ->
a
x
a -> (a -> a) -> a
forall a b. a -> (a -> b) -> b
& LensLike Identity a a PackageName PackageName
forall a. HasVersionedPackage a => Lens' a PackageName
myPkgName LensLike Identity a a PackageName PackageName
-> PackageName -> a -> a
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VersionedPackage
t VersionedPackage
-> Getting PackageName VersionedPackage PackageName -> PackageName
forall s a. s -> Getting a s a -> a
^. Getting PackageName VersionedPackage PackageName
forall a. HasVersionedPackage a => Lens' a PackageName
myPkgName
a -> (a -> a) -> a
forall a b. a -> (a -> b) -> b
& LensLike Identity a a VersionRange VersionRange
forall a. HasVersionedPackage a => Lens' a VersionRange
myVersionRange LensLike Identity a a VersionRange VersionRange
-> VersionRange -> a -> a
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VersionedPackage
t VersionedPackage
-> Getting VersionRange VersionedPackage VersionRange
-> VersionRange
forall s a. s -> Getting a s a -> a
^. Getting VersionRange VersionedPackage VersionRange
forall a. HasVersionedPackage a => Lens' a VersionRange
myVersionRange
)
(VersionedPackage -> a) -> [VersionedPackage] -> [a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [VersionedPackage]
targets
| Bool
otherwise = []
uusiReplace' Uusi
_ a
_ = []
uusiReplace :: (HasVersionedPackage a, Eq a) => Uusis -> Op [a]
uusiReplace :: Uusis -> Op [a]
uusiReplace Uusis
actions [a]
t =
let k :: [(a, Maybe a)]
k = [(a
r', if Bool
success then a -> Maybe a
forall a. a -> Maybe a
Just a
x else Maybe a
forall a. Maybe a
Nothing) | a
x <- [a]
t, Uusi
a <- Uusis
actions, let r :: [a]
r = Uusi -> a -> [a]
forall a. HasVersionedPackage a => Uusi -> a -> [a]
uusiReplace' Uusi
a a
x, let success :: Bool
success = Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [a]
r, a
r' <- [a]
r]
kf :: [a]
kf = (a, Maybe a) -> a
forall a b. (a, b) -> a
fst ((a, Maybe a) -> a) -> [(a, Maybe a)] -> [a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(a, Maybe a)]
k
ks :: [a]
ks = [Maybe a] -> [a]
forall a. [Maybe a] -> [a]
catMaybes ([Maybe a] -> [a]) -> [Maybe a] -> [a]
forall a b. (a -> b) -> a -> b
$ (a, Maybe a) -> Maybe a
forall a b. (a, b) -> b
snd ((a, Maybe a) -> Maybe a) -> [(a, Maybe a)] -> [Maybe a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(a, Maybe a)]
k
in
[a]
kf [a] -> Op [a]
forall a. Semigroup a => a -> a -> a
<> ([a]
t [a] -> Op [a]
forall a. Eq a => [a] -> [a] -> [a]
\\ [a]
ks)
uusiRemove :: HasVersionedPackage a => Uusis -> Op [a]
uusiRemove :: Uusis -> Op [a]
uusiRemove Uusis
actions [a]
t = let ps :: [PackageName -> Bool]
ps = [PackageName -> Bool
p | (Remove Text
_ PackageName -> Bool
p) <- Uusis
actions] in (a -> Bool) -> Op [a]
forall a. (a -> Bool) -> [a] -> [a]
filter (\a
x -> [Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
and ([Bool] -> Bool) -> [Bool] -> Bool
forall a b. (a -> b) -> a -> b
<| ((PackageName -> Bool) -> Bool) -> [PackageName -> Bool] -> [Bool]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Bool -> Bool
not (Bool -> Bool)
-> ((PackageName -> Bool) -> Bool) -> (PackageName -> Bool) -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((PackageName -> Bool) -> PackageName -> Bool
forall a b. (a -> b) -> a -> b
<| (a
x a -> Getting PackageName a PackageName -> PackageName
forall s a. s -> Getting a s a -> a
^. Getting PackageName a PackageName
forall a. HasVersionedPackage a => Lens' a PackageName
myPkgName))) [PackageName -> Bool]
ps) [a]
t
uusiBuildable :: HasBuildInfo a => Uusis -> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiBuildable :: Uusis -> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiBuildable Uusis
actions (UnqualComponentName, CondTree ConfVar [Dependency] a)
t
| (UnqualComponentName
name, CondTree ConfVar [Dependency] a
tree) <- (UnqualComponentName, CondTree ConfVar [Dependency] a)
t,
(Bool
b : [Bool]
_) <- [Bool
b | (SetBuildable Text
_ UnqualComponentName -> Bool
p Bool
b) <- Uusis
actions, UnqualComponentName -> Bool
p UnqualComponentName
name] =
(UnqualComponentName
name, (a -> a)
-> CondTree ConfVar [Dependency] a
-> CondTree ConfVar [Dependency] a
forall a b v c. (a -> b) -> CondTree v c a -> CondTree v c b
mapTreeData (LensLike Identity a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
buildInfo LensLike Identity a a BuildInfo BuildInfo
-> (BuildInfo -> BuildInfo) -> a -> a
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ LensLike Identity BuildInfo BuildInfo Bool Bool
forall a. HasBuildInfo a => Lens' a Bool
buildable LensLike Identity BuildInfo BuildInfo Bool Bool
-> Bool -> BuildInfo -> BuildInfo
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Bool
b) CondTree ConfVar [Dependency] a
tree)
| Bool
otherwise = (UnqualComponentName, CondTree ConfVar [Dependency] a)
t
uusiOptions' :: HasBuildInfo a => Action tag -> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions' :: Action tag
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions' (ModifyBuiltOptions tag
_ UnqualComponentName -> Bool
p Op [String]
f) (UnqualComponentName, CondTree ConfVar [Dependency] a)
x
| (UnqualComponentName
name, CondTree ConfVar [Dependency] a
tree) <- (UnqualComponentName, CondTree ConfVar [Dependency] a)
x,
UnqualComponentName -> Bool
p UnqualComponentName
name =
(UnqualComponentName
name, (a -> a)
-> CondTree ConfVar [Dependency] a
-> CondTree ConfVar [Dependency] a
forall a b v c. (a -> b) -> CondTree v c a -> CondTree v c b
mapTreeData (LensLike Identity a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
buildInfo LensLike Identity a a BuildInfo BuildInfo
-> (BuildInfo -> BuildInfo) -> a -> a
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ LensLike
Identity
BuildInfo
BuildInfo
(PerCompilerFlavor [String])
(PerCompilerFlavor [String])
forall a. HasBuildInfo a => Lens' a (PerCompilerFlavor [String])
options LensLike
Identity
BuildInfo
BuildInfo
(PerCompilerFlavor [String])
(PerCompilerFlavor [String])
-> (PerCompilerFlavor [String] -> PerCompilerFlavor [String])
-> BuildInfo
-> BuildInfo
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ \(PerCompilerFlavor [String]
ghc [String]
ghcjs) -> [String] -> [String] -> PerCompilerFlavor [String]
forall v. v -> v -> PerCompilerFlavor v
PerCompilerFlavor (Op [String]
f [String]
ghc) [String]
ghcjs) CondTree ConfVar [Dependency] a
tree)
uusiOptions' Action tag
_ (UnqualComponentName, CondTree ConfVar [Dependency] a)
x = (UnqualComponentName, CondTree ConfVar [Dependency] a)
x
uusiOptions :: HasBuildInfo a => [Action tag] -> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions :: [Action tag]
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions [Action tag]
actions = [Op (UnqualComponentName, CondTree ConfVar [Dependency] a)]
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall a. [Op a] -> Op a
chain ([Op (UnqualComponentName, CondTree ConfVar [Dependency] a)]
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a))
-> [Op (UnqualComponentName, CondTree ConfVar [Dependency] a)]
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall a b. (a -> b) -> a -> b
<| Action tag
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall a tag.
HasBuildInfo a =>
Action tag
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions' (Action tag
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a))
-> [Action tag]
-> [Op (UnqualComponentName, CondTree ConfVar [Dependency] a)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Action tag]
actions
uusiBuildInfo :: Uusis -> Op BuildInfo
uusiBuildInfo :: Uusis -> BuildInfo -> BuildInfo
uusiBuildInfo Uusis
actions BuildInfo
i =
BuildInfo
i
BuildInfo -> (BuildInfo -> BuildInfo) -> BuildInfo
forall a b. a -> (a -> b) -> b
|> (LensLike Identity BuildInfo BuildInfo [Dependency] [Dependency]
forall a. HasBuildInfo a => Lens' a [Dependency]
targetBuildDepends LensLike Identity BuildInfo BuildInfo [Dependency] [Dependency]
-> ([Dependency] -> [Dependency]) -> BuildInfo -> BuildInfo
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Dependency -> Dependency) -> [Dependency] -> [Dependency]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Uusis -> Dependency -> Dependency
forall a. HasVersionedPackage a => Uusis -> Op a
uusiRange Uusis
actions) ([Dependency] -> [Dependency])
-> ([Dependency] -> [Dependency]) -> [Dependency] -> [Dependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [Dependency] -> [Dependency]
forall a. (HasVersionedPackage a, Eq a) => Uusis -> Op [a]
uusiReplace Uusis
actions ([Dependency] -> [Dependency])
-> ([Dependency] -> [Dependency]) -> [Dependency] -> [Dependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [Dependency] -> [Dependency]
forall a. HasVersionedPackage a => Uusis -> Op [a]
uusiRemove Uusis
actions)
BuildInfo -> (BuildInfo -> BuildInfo) -> BuildInfo
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity BuildInfo BuildInfo [ExeDependency] [ExeDependency]
forall a. HasBuildInfo a => Lens' a [ExeDependency]
buildToolDepends LensLike
Identity BuildInfo BuildInfo [ExeDependency] [ExeDependency]
-> ([ExeDependency] -> [ExeDependency]) -> BuildInfo -> BuildInfo
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (ExeDependency -> ExeDependency)
-> [ExeDependency] -> [ExeDependency]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Uusis -> ExeDependency -> ExeDependency
forall a. HasVersionedPackage a => Uusis -> Op a
uusiRange Uusis
actions) ([ExeDependency] -> [ExeDependency])
-> ([ExeDependency] -> [ExeDependency])
-> [ExeDependency]
-> [ExeDependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [ExeDependency] -> [ExeDependency]
forall a. (HasVersionedPackage a, Eq a) => Uusis -> Op [a]
uusiReplace Uusis
actions ([ExeDependency] -> [ExeDependency])
-> ([ExeDependency] -> [ExeDependency])
-> [ExeDependency]
-> [ExeDependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [ExeDependency] -> [ExeDependency]
forall a. HasVersionedPackage a => Uusis -> Op [a]
uusiRemove Uusis
actions)
BuildInfo -> (BuildInfo -> BuildInfo) -> BuildInfo
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity
BuildInfo
BuildInfo
[LegacyExeDependency]
[LegacyExeDependency]
forall a. HasBuildInfo a => Lens' a [LegacyExeDependency]
buildTools LensLike
Identity
BuildInfo
BuildInfo
[LegacyExeDependency]
[LegacyExeDependency]
-> ([LegacyExeDependency] -> [LegacyExeDependency])
-> BuildInfo
-> BuildInfo
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (LegacyExeDependency -> LegacyExeDependency)
-> [LegacyExeDependency] -> [LegacyExeDependency]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Uusis -> LegacyExeDependency -> LegacyExeDependency
forall a. HasVersionedPackage a => Uusis -> Op a
uusiRange Uusis
actions) ([LegacyExeDependency] -> [LegacyExeDependency])
-> ([LegacyExeDependency] -> [LegacyExeDependency])
-> [LegacyExeDependency]
-> [LegacyExeDependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [LegacyExeDependency] -> [LegacyExeDependency]
forall a. (HasVersionedPackage a, Eq a) => Uusis -> Op [a]
uusiReplace Uusis
actions ([LegacyExeDependency] -> [LegacyExeDependency])
-> ([LegacyExeDependency] -> [LegacyExeDependency])
-> [LegacyExeDependency]
-> [LegacyExeDependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [LegacyExeDependency] -> [LegacyExeDependency]
forall a. HasVersionedPackage a => Uusis -> Op [a]
uusiRemove Uusis
actions)
uusiCondTree :: (HasBuildInfo a) => Uusis -> Op (CondTree ConfVar [Dependency] a)
uusiCondTree :: Uusis -> Op (CondTree ConfVar [Dependency] a)
uusiCondTree Uusis
actions = (a -> a) -> Op (CondTree ConfVar [Dependency] a)
forall a b v c. (a -> b) -> CondTree v c a -> CondTree v c b
mapTreeData (LensLike Identity a a BuildInfo BuildInfo
forall a. HasBuildInfo a => Lens' a BuildInfo
buildInfo LensLike Identity a a BuildInfo BuildInfo
-> (BuildInfo -> BuildInfo) -> a -> a
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ Uusis -> BuildInfo -> BuildInfo
uusiBuildInfo Uusis
actions) Op (CondTree ConfVar [Dependency] a)
-> Op (CondTree ConfVar [Dependency] a)
-> Op (CondTree ConfVar [Dependency] a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Dependency] -> [Dependency])
-> Op (CondTree ConfVar [Dependency] a)
forall c d v a. (c -> d) -> CondTree v c a -> CondTree v d a
mapTreeConstrs ((Dependency -> Dependency) -> [Dependency] -> [Dependency]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Uusis -> Dependency -> Dependency
forall a. HasVersionedPackage a => Uusis -> Op a
uusiRange Uusis
actions) ([Dependency] -> [Dependency])
-> ([Dependency] -> [Dependency]) -> [Dependency] -> [Dependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [Dependency] -> [Dependency]
forall a. (HasVersionedPackage a, Eq a) => Uusis -> Op [a]
uusiReplace Uusis
actions ([Dependency] -> [Dependency])
-> ([Dependency] -> [Dependency]) -> [Dependency] -> [Dependency]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis -> [Dependency] -> [Dependency]
forall a. HasVersionedPackage a => Uusis -> Op [a]
uusiRemove Uusis
actions)
uusiGenericPackageDescription ::
Uusis ->
Op GenericPackageDescription
uusiGenericPackageDescription :: Uusis -> Op GenericPackageDescription
uusiGenericPackageDescription Uusis
actions GenericPackageDescription
cabal =
GenericPackageDescription
cabal
GenericPackageDescription
-> Op GenericPackageDescription -> GenericPackageDescription
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
[(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
Lens'
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
condExecutables LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
[(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
-> ([(UnqualComponentName,
CondTree ConfVar [Dependency] Executable)]
-> [(UnqualComponentName,
CondTree ConfVar [Dependency] Executable)])
-> Op GenericPackageDescription
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
-> [(UnqualComponentName,
CondTree ConfVar [Dependency] Executable)]
forall (f :: * -> *) a.
(Functor f, HasBuildInfo a) =>
f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiTrees)
GenericPackageDescription
-> Op GenericPackageDescription -> GenericPackageDescription
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
[(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
Lens'
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
condTestSuites LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
[(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
-> ([(UnqualComponentName,
CondTree ConfVar [Dependency] TestSuite)]
-> [(UnqualComponentName,
CondTree ConfVar [Dependency] TestSuite)])
-> Op GenericPackageDescription
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
-> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
forall (f :: * -> *) a.
(Functor f, HasBuildInfo a) =>
f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiTrees)
GenericPackageDescription
-> Op GenericPackageDescription -> GenericPackageDescription
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
[(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
Lens'
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
condBenchmarks LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
[(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
-> ([(UnqualComponentName,
CondTree ConfVar [Dependency] Benchmark)]
-> [(UnqualComponentName,
CondTree ConfVar [Dependency] Benchmark)])
-> Op GenericPackageDescription
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
-> [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
forall (f :: * -> *) a.
(Functor f, HasBuildInfo a) =>
f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiTrees)
GenericPackageDescription
-> Op GenericPackageDescription -> GenericPackageDescription
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
[(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
Lens'
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
condSubLibraries LensLike
Identity
GenericPackageDescription
GenericPackageDescription
[(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
[(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
-> ([(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
-> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)])
-> Op GenericPackageDescription
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ [(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
-> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
forall (f :: * -> *) a.
(Functor f, HasBuildInfo a) =>
f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiTrees)
GenericPackageDescription
-> Op GenericPackageDescription -> GenericPackageDescription
forall a b. a -> (a -> b) -> b
|> (LensLike
Identity
GenericPackageDescription
GenericPackageDescription
(Maybe (CondTree ConfVar [Dependency] Library))
(Maybe (CondTree ConfVar [Dependency] Library))
Lens'
GenericPackageDescription
(Maybe (CondTree ConfVar [Dependency] Library))
condLibrary LensLike
Identity
GenericPackageDescription
GenericPackageDescription
(Maybe (CondTree ConfVar [Dependency] Library))
(Maybe (CondTree ConfVar [Dependency] Library))
-> ((CondTree ConfVar [Dependency] Library
-> Identity (CondTree ConfVar [Dependency] Library))
-> Maybe (CondTree ConfVar [Dependency] Library)
-> Identity (Maybe (CondTree ConfVar [Dependency] Library)))
-> (CondTree ConfVar [Dependency] Library
-> Identity (CondTree ConfVar [Dependency] Library))
-> GenericPackageDescription
-> Identity GenericPackageDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CondTree ConfVar [Dependency] Library
-> Identity (CondTree ConfVar [Dependency] Library))
-> Maybe (CondTree ConfVar [Dependency] Library)
-> Identity (Maybe (CondTree ConfVar [Dependency] Library))
forall (f :: * -> *) a b. Functor f => ASetter (f a) (f b) a b
mapped ((CondTree ConfVar [Dependency] Library
-> Identity (CondTree ConfVar [Dependency] Library))
-> GenericPackageDescription -> Identity GenericPackageDescription)
-> (CondTree ConfVar [Dependency] Library
-> CondTree ConfVar [Dependency] Library)
-> Op GenericPackageDescription
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ Uusis
-> CondTree ConfVar [Dependency] Library
-> CondTree ConfVar [Dependency] Library
forall a.
HasBuildInfo a =>
Uusis -> Op (CondTree ConfVar [Dependency] a)
uusiCondTree Uusis
actions (CondTree ConfVar [Dependency] Library
-> CondTree ConfVar [Dependency] Library)
-> (CondTree ConfVar [Dependency] Library
-> CondTree ConfVar [Dependency] Library)
-> CondTree ConfVar [Dependency] Library
-> CondTree ConfVar [Dependency] Library
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((UnqualComponentName, CondTree ConfVar [Dependency] Library)
-> CondTree ConfVar [Dependency] Library
forall a b. (a, b) -> b
snd ((UnqualComponentName, CondTree ConfVar [Dependency] Library)
-> CondTree ConfVar [Dependency] Library)
-> (CondTree ConfVar [Dependency] Library
-> (UnqualComponentName, CondTree ConfVar [Dependency] Library))
-> CondTree ConfVar [Dependency] Library
-> CondTree ConfVar [Dependency] Library
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uusis
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] Library)
forall a tag.
HasBuildInfo a =>
[Action tag]
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions Uusis
actions Op (UnqualComponentName, CondTree ConfVar [Dependency] Library)
-> (CondTree ConfVar [Dependency] Library
-> (UnqualComponentName, CondTree ConfVar [Dependency] Library))
-> CondTree ConfVar [Dependency] Library
-> (UnqualComponentName, CondTree ConfVar [Dependency] Library)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UnqualComponentName
"library",)))
where
uusiTrees :: f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiTrees f (UnqualComponentName, CondTree ConfVar [Dependency] a)
trees = f (UnqualComponentName, CondTree ConfVar [Dependency] a)
trees f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> ((UnqualComponentName, CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a))
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> LensLike
Identity
(UnqualComponentName, CondTree ConfVar [Dependency] a)
(UnqualComponentName, CondTree ConfVar [Dependency] a)
(CondTree ConfVar [Dependency] a)
(CondTree ConfVar [Dependency] a)
forall c a b. Lens (c, a) (c, b) a b
_2 LensLike
Identity
(UnqualComponentName, CondTree ConfVar [Dependency] a)
(UnqualComponentName, CondTree ConfVar [Dependency] a)
(CondTree ConfVar [Dependency] a)
(CondTree ConfVar [Dependency] a)
-> (CondTree ConfVar [Dependency] a
-> CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ Uusis
-> CondTree ConfVar [Dependency] a
-> CondTree ConfVar [Dependency] a
forall a.
HasBuildInfo a =>
Uusis -> Op (CondTree ConfVar [Dependency] a)
uusiCondTree Uusis
actions f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> ((UnqualComponentName, CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a))
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> Uusis
-> (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall a.
HasBuildInfo a =>
Uusis -> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiBuildable Uusis
actions f (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> ((UnqualComponentName, CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a))
-> f (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> Uusis
-> (UnqualComponentName, CondTree ConfVar [Dependency] a)
-> (UnqualComponentName, CondTree ConfVar [Dependency] a)
forall a tag.
HasBuildInfo a =>
[Action tag]
-> Op (UnqualComponentName, CondTree ConfVar [Dependency] a)
uusiOptions Uusis
actions