{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module HaskellCI.Auxiliary (
Auxiliary (..),
auxiliary,
pkgNameDirVariable',
pkgNameDirVariable,
) where
import HaskellCI.Prelude
import Prelude (head)
import qualified Data.Set as S
import qualified Distribution.CabalSpecVersion as C
import qualified Distribution.FieldGrammar.Pretty as C
import qualified Distribution.Fields.Pretty as C
import qualified Distribution.Pretty as C
import qualified Distribution.Types.GenericPackageDescription as C
import qualified Distribution.Types.VersionRange as C
import qualified Text.PrettyPrint as PP
import Cabal.Optimization
import Cabal.Project
import Cabal.SourceRepo
import HaskellCI.Compiler
import HaskellCI.Config
import HaskellCI.Config.CopyFields
import HaskellCI.Config.Doctest
import HaskellCI.Config.Docspec
import HaskellCI.Jobs
import HaskellCI.List
import HaskellCI.Package
data Auxiliary = Auxiliary
{ Auxiliary -> [Package]
pkgs :: [Package]
, Auxiliary -> [URI]
uris :: [URI]
, Auxiliary -> String
projectName :: String
, Auxiliary -> Bool
doctestEnabled :: Bool
, Auxiliary -> Bool
docspecEnabled :: Bool
, Auxiliary -> CompilerRange
hasTests :: CompilerRange
, Auxiliary -> Bool
hasLibrary :: Bool
, :: [C.PrettyField ()]
, Auxiliary -> String
testShowDetails :: String
}
auxiliary :: Config -> Project URI Void Package -> JobVersions -> Auxiliary
auxiliary :: Config -> Project URI Void Package -> JobVersions -> Auxiliary
auxiliary Config {Bool
String
[String]
[PrettyField ()]
[PackageName]
[Installed]
[ConstraintSet]
Maybe String
Maybe Version
Maybe Jobs
VersionRange
Set String
Set Version
Set Fold
Map Version String
Ubuntu
PackageScope
HLintConfig
DoctestConfig
DocspecConfig
CopyFields
TestedWithJobs
cfgGitHubActionName :: Config -> Maybe String
cfgRawTravis :: Config -> String
cfgRawProject :: Config -> [PrettyField ()]
cfgConstraintSets :: Config -> [ConstraintSet]
cfgHLint :: Config -> HLintConfig
cfgDocspec :: Config -> DocspecConfig
cfgDoctest :: Config -> DoctestConfig
cfgErrorMissingMethods :: Config -> PackageScope
cfgInsertVersion :: Config -> Bool
cfgGitHubPatches :: Config -> [String]
cfgTravisPatches :: Config -> [String]
cfgApt :: Config -> Set String
cfgOsx :: Config -> Set Version
cfgLastInSeries :: Config -> Bool
cfgAllowFailures :: Config -> VersionRange
cfgEnv :: Config -> Map Version String
cfgGoogleChrome :: Config -> Bool
cfgPostgres :: Config -> Bool
cfgGhcHead :: Config -> Bool
cfgFolds :: Config -> Set Fold
cfgProjectName :: Config -> Maybe String
cfgEmailNotifications :: Config -> Bool
cfgIrcIfInOriginRepo :: Config -> Bool
cfgIrcChannels :: Config -> [String]
cfgOnlyBranches :: Config -> [String]
cfgCheck :: Config -> Bool
cfgTestOutputDirect :: Config -> Bool
cfgGhcjsTools :: Config -> [PackageName]
cfgGhcjsTests :: Config -> Bool
cfgHeadHackage :: Config -> VersionRange
cfgUnconstrainted :: Config -> VersionRange
cfgNoTestsNoBench :: Config -> VersionRange
cfgHaddock :: Config -> VersionRange
cfgBenchmarks :: Config -> VersionRange
cfgRunTests :: Config -> VersionRange
cfgTests :: Config -> VersionRange
cfgInstalled :: Config -> [Installed]
cfgInstallDeps :: Config -> Bool
cfgCache :: Config -> Bool
cfgSubmodules :: Config -> Bool
cfgLocalGhcOptions :: Config -> [String]
cfgCopyFields :: Config -> CopyFields
cfgTestedWith :: Config -> TestedWithJobs
cfgUbuntu :: Config -> Ubuntu
cfgJobs :: Config -> Maybe Jobs
cfgCabalInstallVersion :: Config -> Maybe Version
cfgGitHubActionName :: Maybe String
cfgRawTravis :: String
cfgRawProject :: [PrettyField ()]
cfgConstraintSets :: [ConstraintSet]
cfgHLint :: HLintConfig
cfgDocspec :: DocspecConfig
cfgDoctest :: DoctestConfig
cfgErrorMissingMethods :: PackageScope
cfgInsertVersion :: Bool
cfgGitHubPatches :: [String]
cfgTravisPatches :: [String]
cfgApt :: Set String
cfgOsx :: Set Version
cfgLastInSeries :: Bool
cfgAllowFailures :: VersionRange
cfgEnv :: Map Version String
cfgGoogleChrome :: Bool
cfgPostgres :: Bool
cfgGhcHead :: Bool
cfgFolds :: Set Fold
cfgProjectName :: Maybe String
cfgEmailNotifications :: Bool
cfgIrcIfInOriginRepo :: Bool
cfgIrcChannels :: [String]
cfgOnlyBranches :: [String]
cfgCheck :: Bool
cfgTestOutputDirect :: Bool
cfgGhcjsTools :: [PackageName]
cfgGhcjsTests :: Bool
cfgHeadHackage :: VersionRange
cfgUnconstrainted :: VersionRange
cfgNoTestsNoBench :: VersionRange
cfgHaddock :: VersionRange
cfgBenchmarks :: VersionRange
cfgRunTests :: VersionRange
cfgTests :: VersionRange
cfgInstalled :: [Installed]
cfgInstallDeps :: Bool
cfgCache :: Bool
cfgSubmodules :: Bool
cfgLocalGhcOptions :: [String]
cfgCopyFields :: CopyFields
cfgTestedWith :: TestedWithJobs
cfgUbuntu :: Ubuntu
cfgJobs :: Maybe Jobs
cfgCabalInstallVersion :: Maybe Version
..} Project URI Void Package
prj JobVersions {Set Version
Set CompilerVersion
omittedOsxVersions :: JobVersions -> Set Version
osxVersions :: JobVersions -> Set Version
versions :: JobVersions -> Set CompilerVersion
omittedOsxVersions :: Set Version
osxVersions :: Set Version
versions :: Set CompilerVersion
..} = Auxiliary :: [Package]
-> [URI]
-> String
-> Bool
-> Bool
-> CompilerRange
-> Bool
-> [PrettyField ()]
-> String
-> Auxiliary
Auxiliary {Bool
String
[PrettyField ()]
[URI]
[Package]
CompilerRange
extraCabalProjectFields :: [PrettyField ()]
hasLibrary :: Bool
hasTests :: CompilerRange
testShowDetails :: String
docspecEnabled :: Bool
doctestEnabled :: Bool
projectName :: String
uris :: [URI]
pkgs :: [Package]
testShowDetails :: String
extraCabalProjectFields :: [PrettyField ()]
hasLibrary :: Bool
hasTests :: CompilerRange
docspecEnabled :: Bool
doctestEnabled :: Bool
projectName :: String
uris :: [URI]
pkgs :: [Package]
..}
where
pkgs :: [Package]
pkgs = Project URI Void Package -> [Package]
forall uri opt pkg. Project uri opt pkg -> [pkg]
prjPackages Project URI Void Package
prj
uris :: [URI]
uris = Project URI Void Package -> [URI]
forall uri opt pkg. Project uri opt pkg -> [uri]
prjUriPackages Project URI Void Package
prj
projectName :: String
projectName = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe (Package -> String
pkgName (Package -> String) -> Package -> String
forall a b. (a -> b) -> a -> b
$ [Package] -> Package
forall a. [a] -> a
Prelude.head [Package]
pkgs) Maybe String
cfgProjectName
doctestEnabled :: Bool
doctestEnabled = (CompilerVersion -> Bool) -> Set CompilerVersion -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (Bool -> (Version -> Bool) -> CompilerVersion -> Bool
forall a. a -> (Version -> a) -> CompilerVersion -> a
maybeGHC Bool
False (Version -> VersionRange -> Bool
`C.withinRange` DoctestConfig -> VersionRange
cfgDoctestEnabled DoctestConfig
cfgDoctest)) Set CompilerVersion
versions
docspecEnabled :: Bool
docspecEnabled = (CompilerVersion -> Bool) -> Set CompilerVersion -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (Bool -> (Version -> Bool) -> CompilerVersion -> Bool
forall a. a -> (Version -> a) -> CompilerVersion -> a
maybeGHC Bool
False (Version -> VersionRange -> Bool
`C.withinRange` DocspecConfig -> VersionRange
cfgDocspecEnabled DocspecConfig
cfgDocspec)) Set CompilerVersion
versions
testShowDetails :: String
testShowDetails
| Bool
cfgTestOutputDirect = String
" --test-show-details=direct"
| Bool
otherwise = String
""
hasTests :: CompilerRange
hasTests :: CompilerRange
hasTests = Set CompilerVersion -> CompilerRange
RangePoints (Set CompilerVersion -> CompilerRange)
-> Set CompilerVersion -> CompilerRange
forall a b. (a -> b) -> a -> b
$ [Set CompilerVersion] -> Set CompilerVersion
forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a
S.unions
[ Set CompilerVersion
pkgJobs
| Pkg{GenericPackageDescription
pkgGpd :: Package -> GenericPackageDescription
pkgGpd :: GenericPackageDescription
pkgGpd,Set CompilerVersion
pkgJobs :: Package -> Set CompilerVersion
pkgJobs :: Set CompilerVersion
pkgJobs} <- [Package]
pkgs
, Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
-> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
-> Bool)
-> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
-> Bool
forall a b. (a -> b) -> a -> b
$ GenericPackageDescription
-> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
C.condTestSuites GenericPackageDescription
pkgGpd
]
hasLibrary :: Bool
hasLibrary = (Package -> Bool) -> [Package] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (\Pkg{GenericPackageDescription
pkgGpd :: GenericPackageDescription
pkgGpd :: Package -> GenericPackageDescription
pkgGpd} -> Maybe (CondTree ConfVar [Dependency] Library) -> Bool
forall a. Maybe a -> Bool
isJust (Maybe (CondTree ConfVar [Dependency] Library) -> Bool)
-> Maybe (CondTree ConfVar [Dependency] Library) -> Bool
forall a b. (a -> b) -> a -> b
$ GenericPackageDescription
-> Maybe (CondTree ConfVar [Dependency] Library)
C.condLibrary GenericPackageDescription
pkgGpd) [Package]
pkgs
extraCabalProjectFields :: [C.PrettyField ()]
extraCabalProjectFields :: [PrettyField ()]
extraCabalProjectFields = ListBuilder (PrettyField ()) () -> [PrettyField ()]
forall x. ListBuilder x () -> [x]
buildList (ListBuilder (PrettyField ()) () -> [PrettyField ()])
-> ListBuilder (PrettyField ()) () -> [PrettyField ()]
forall a b. (a -> b) -> a -> b
$ do
[URI]
-> (URI -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ [URI]
uris ((URI -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ())
-> (URI -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ \URI
uri ->
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"packages" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text (String -> Doc) -> String -> Doc
forall a b. (a -> b) -> a -> b
$ (String -> String) -> URI -> String -> String
uriToString String -> String
forall a. a -> a
id URI
uri String
""
case CopyFields
cfgCopyFields of
CopyFields
CopyFieldsNone -> () -> ListBuilder (PrettyField ()) ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
CopyFields
CopyFieldsSome -> ListBuilder (PrettyField ()) ()
copyFieldsSome
CopyFields
CopyFieldsAll -> ListBuilder (PrettyField ()) ()
copyFieldsSome ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ()
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> (PrettyField () -> ListBuilder (PrettyField ()) ())
-> [PrettyField ()] -> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
(a -> f b) -> t a -> f ()
traverse_ PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (Project URI Void Package -> [PrettyField ()]
forall uri opt pkg. Project uri opt pkg -> [PrettyField ()]
prjOtherFields Project URI Void Package
prj)
Bool
-> ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless ([String] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [String]
cfgLocalGhcOptions) (ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ [Package]
-> (Package -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ [Package]
pkgs ((Package -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ())
-> (Package -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ \Pkg{String
pkgName :: String
pkgName :: Package -> String
pkgName} -> do
let s :: String
s = [String] -> String
unwords ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ (String -> String) -> [String] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (Doc -> String
forall a. Show a => a -> String
show (Doc -> String) -> (String -> Doc) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Doc
C.showToken) [String]
cfgLocalGhcOptions
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> [Doc] -> [PrettyField ()] -> PrettyField ()
forall ann.
ann -> FieldName -> [Doc] -> [PrettyField ann] -> PrettyField ann
C.PrettySection () FieldName
"package" [String -> Doc
PP.text String
pkgName] ([PrettyField ()] -> PrettyField ())
-> [PrettyField ()] -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ ListBuilder (PrettyField ()) () -> [PrettyField ()]
forall x. ListBuilder x () -> [x]
buildList (ListBuilder (PrettyField ()) () -> [PrettyField ()])
-> ListBuilder (PrettyField ()) () -> [PrettyField ()]
forall a b. (a -> b) -> a -> b
$
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"ghc-options" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text String
s
(PrettyField () -> ListBuilder (PrettyField ()) ())
-> [PrettyField ()] -> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
(a -> f b) -> t a -> f ()
traverse_ PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item [PrettyField ()]
cfgRawProject
where
copyFieldsSome :: ListBuilder (C.PrettyField ()) ()
copyFieldsSome :: ListBuilder (PrettyField ()) ()
copyFieldsSome = do
[String]
-> (String -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (Project URI Void Package -> [String]
forall uri opt pkg. Project uri opt pkg -> [String]
prjConstraints Project URI Void Package
prj) ((String -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ())
-> (String -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ \String
xs -> do
let s :: String
s = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat (String -> [String]
lines String
xs)
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"constraints" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text String
s
[String]
-> (String -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (Project URI Void Package -> [String]
forall uri opt pkg. Project uri opt pkg -> [String]
prjAllowNewer Project URI Void Package
prj) ((String -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ())
-> (String -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ \String
xs -> do
let s :: String
s = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat (String -> [String]
lines String
xs)
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"allow-newer" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text String
s
Bool
-> ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Project URI Void Package -> Bool
forall uri opt pkg. Project uri opt pkg -> Bool
prjReorderGoals Project URI Void Package
prj) (ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"reorder-goals" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text String
"True"
Maybe Int
-> (Int -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (Project URI Void Package -> Maybe Int
forall uri opt pkg. Project uri opt pkg -> Maybe Int
prjMaxBackjumps Project URI Void Package
prj) ((Int -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ())
-> (Int -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ \Int
bj ->
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"max-backjumps" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text (String -> Doc) -> String -> Doc
forall a b. (a -> b) -> a -> b
$ Int -> String
forall a. Show a => a -> String
show Int
bj
case Project URI Void Package -> Optimization
forall uri opt pkg. Project uri opt pkg -> Optimization
prjOptimization Project URI Void Package
prj of
Optimization
OptimizationOn -> () -> ListBuilder (PrettyField ()) ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Optimization
OptimizationOff -> PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"optimization" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text String
"False"
OptimizationLevel Int
l -> PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> Doc -> PrettyField ()
forall ann. ann -> FieldName -> Doc -> PrettyField ann
C.PrettyField () FieldName
"optimization" (Doc -> PrettyField ()) -> Doc -> PrettyField ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
PP.text (String -> Doc) -> String -> Doc
forall a b. (a -> b) -> a -> b
$ Int -> String
forall a. Show a => a -> String
show Int
l
[SourceRepositoryPackage Maybe]
-> (SourceRepositoryPackage Maybe
-> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (Project URI Void Package -> [SourceRepositoryPackage Maybe]
forall uri opt pkg.
Project uri opt pkg -> [SourceRepositoryPackage Maybe]
prjSourceRepos Project URI Void Package
prj) ((SourceRepositoryPackage Maybe -> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ())
-> (SourceRepositoryPackage Maybe
-> ListBuilder (PrettyField ()) ())
-> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ \SourceRepositoryPackage Maybe
repo ->
PrettyField () -> ListBuilder (PrettyField ()) ()
forall x. x -> ListBuilder x ()
item (PrettyField () -> ListBuilder (PrettyField ()) ())
-> PrettyField () -> ListBuilder (PrettyField ()) ()
forall a b. (a -> b) -> a -> b
$ () -> FieldName -> [Doc] -> [PrettyField ()] -> PrettyField ()
forall ann.
ann -> FieldName -> [Doc] -> [PrettyField ann] -> PrettyField ann
C.PrettySection () FieldName
"source-repository-package" [] ([PrettyField ()] -> PrettyField ())
-> [PrettyField ()] -> PrettyField ()
forall a b. (a -> b) -> a -> b
$
CabalSpecVersion
-> PrettyFieldGrammar SourceRepoList SourceRepoList
-> SourceRepoList
-> [PrettyField ()]
forall s a.
CabalSpecVersion -> PrettyFieldGrammar s a -> s -> [PrettyField ()]
C.prettyFieldGrammar CabalSpecVersion
C.cabalSpecLatest PrettyFieldGrammar SourceRepoList SourceRepoList
forall (c :: * -> Constraint) (g :: * -> * -> *).
(FieldGrammar c g, Applicative (g SourceRepoList),
c (List NoCommaFSep FilePathNT String), c (Identity RepoType)) =>
g SourceRepoList SourceRepoList
sourceRepositoryPackageGrammar ((forall x. Maybe x -> [x])
-> SourceRepositoryPackage Maybe -> SourceRepoList
forall (f :: * -> *) (g :: * -> *).
(forall x. f x -> g x)
-> SourceRepositoryPackage f -> SourceRepositoryPackage g
srpHoist forall x. Maybe x -> [x]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList SourceRepositoryPackage Maybe
repo)
pkgNameDirVariable' :: String -> String
pkgNameDirVariable' :: String -> String
pkgNameDirVariable' String
n = String
"PKGDIR_" String -> String -> String
forall a. [a] -> [a] -> [a]
++ (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
f String
n where
f :: Char -> Char
f Char
'-' = Char
'_'
f Char
c = Char
c
pkgNameDirVariable :: String -> String
pkgNameDirVariable :: String -> String
pkgNameDirVariable String
n = String
"${" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
pkgNameDirVariable' String
n String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
"}"