{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module HaskellCI.Travis.Yaml where
import HaskellCI.Prelude
import qualified Data.Aeson as Aeson
import qualified Data.List.NonEmpty as NE
import HaskellCI.Config.Ubuntu
import HaskellCI.List
import HaskellCI.Sh
import HaskellCI.YamlSyntax
data Travis = Travis
{ Travis -> Ubuntu
travisUbuntu :: !Ubuntu
, Travis -> String
travisLanguage :: !String
, Travis -> TravisGit
travisGit :: !TravisGit
, Travis -> TravisCache
travisCache :: !TravisCache
, Travis -> TravisBranches
travisBranches :: !TravisBranches
, Travis -> TravisNotifications
travisNotifications :: !TravisNotifications
, Travis -> [String]
travisServices :: ![String]
, Travis -> TravisAddons
travisAddons :: !TravisAddons
, Travis -> TravisMatrix
travisMatrix :: !TravisMatrix
, Travis -> [Sh]
travisBeforeCache :: ![Sh]
, Travis -> [Sh]
travisBeforeInstall :: ![Sh]
, Travis -> [Sh]
travisInstall :: ![Sh]
, Travis -> [Sh]
travisScript :: ![Sh]
}
deriving Int -> Travis -> ShowS
[Travis] -> ShowS
Travis -> String
(Int -> Travis -> ShowS)
-> (Travis -> String) -> ([Travis] -> ShowS) -> Show Travis
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Travis -> ShowS
showsPrec :: Int -> Travis -> ShowS
$cshow :: Travis -> String
show :: Travis -> String
$cshowList :: [Travis] -> ShowS
showList :: [Travis] -> ShowS
Show
newtype TravisGit = TravisGit
{ TravisGit -> Bool
tgSubmodules :: Bool
}
deriving Int -> TravisGit -> ShowS
[TravisGit] -> ShowS
TravisGit -> String
(Int -> TravisGit -> ShowS)
-> (TravisGit -> String)
-> ([TravisGit] -> ShowS)
-> Show TravisGit
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisGit -> ShowS
showsPrec :: Int -> TravisGit -> ShowS
$cshow :: TravisGit -> String
show :: TravisGit -> String
$cshowList :: [TravisGit] -> ShowS
showList :: [TravisGit] -> ShowS
Show
newtype TravisCache = TravisCache
{ TravisCache -> [String]
tcDirectories :: [FilePath]
}
deriving Int -> TravisCache -> ShowS
[TravisCache] -> ShowS
TravisCache -> String
(Int -> TravisCache -> ShowS)
-> (TravisCache -> String)
-> ([TravisCache] -> ShowS)
-> Show TravisCache
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisCache -> ShowS
showsPrec :: Int -> TravisCache -> ShowS
$cshow :: TravisCache -> String
show :: TravisCache -> String
$cshowList :: [TravisCache] -> ShowS
showList :: [TravisCache] -> ShowS
Show
newtype TravisBranches = TravisBranches
{ TravisBranches -> [String]
tbOnly :: [String]
}
deriving Int -> TravisBranches -> ShowS
[TravisBranches] -> ShowS
TravisBranches -> String
(Int -> TravisBranches -> ShowS)
-> (TravisBranches -> String)
-> ([TravisBranches] -> ShowS)
-> Show TravisBranches
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisBranches -> ShowS
showsPrec :: Int -> TravisBranches -> ShowS
$cshow :: TravisBranches -> String
show :: TravisBranches -> String
$cshowList :: [TravisBranches] -> ShowS
showList :: [TravisBranches] -> ShowS
Show
data TravisNotifications = TravisNotifications
{ TravisNotifications -> Maybe TravisIRC
tnIRC :: Maybe TravisIRC
, TravisNotifications -> Bool
tnEmail :: Bool
}
deriving Int -> TravisNotifications -> ShowS
[TravisNotifications] -> ShowS
TravisNotifications -> String
(Int -> TravisNotifications -> ShowS)
-> (TravisNotifications -> String)
-> ([TravisNotifications] -> ShowS)
-> Show TravisNotifications
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisNotifications -> ShowS
showsPrec :: Int -> TravisNotifications -> ShowS
$cshow :: TravisNotifications -> String
show :: TravisNotifications -> String
$cshowList :: [TravisNotifications] -> ShowS
showList :: [TravisNotifications] -> ShowS
Show
data TravisIRC = TravisIRC
{ TravisIRC -> [String]
tiChannels :: [String]
, TravisIRC -> Bool
tiSkipJoin :: Bool
, TravisIRC -> [String]
tiTemplate :: [String]
, TravisIRC -> Maybe String
tiNick :: Maybe String
, TravisIRC -> Maybe String
tiPassword :: Maybe String
}
deriving Int -> TravisIRC -> ShowS
[TravisIRC] -> ShowS
TravisIRC -> String
(Int -> TravisIRC -> ShowS)
-> (TravisIRC -> String)
-> ([TravisIRC] -> ShowS)
-> Show TravisIRC
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisIRC -> ShowS
showsPrec :: Int -> TravisIRC -> ShowS
$cshow :: TravisIRC -> String
show :: TravisIRC -> String
$cshowList :: [TravisIRC] -> ShowS
showList :: [TravisIRC] -> ShowS
Show
data TravisMatrix = TravisMatrix
{ TravisMatrix -> [TravisJob]
tmInclude :: [TravisJob]
, TravisMatrix -> [TravisAllowFailure]
tmAllowFailures :: [TravisAllowFailure]
}
deriving Int -> TravisMatrix -> ShowS
[TravisMatrix] -> ShowS
TravisMatrix -> String
(Int -> TravisMatrix -> ShowS)
-> (TravisMatrix -> String)
-> ([TravisMatrix] -> ShowS)
-> Show TravisMatrix
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisMatrix -> ShowS
showsPrec :: Int -> TravisMatrix -> ShowS
$cshow :: TravisMatrix -> String
show :: TravisMatrix -> String
$cshowList :: [TravisMatrix] -> ShowS
showList :: [TravisMatrix] -> ShowS
Show
data TravisJob = TravisJob
{ TravisJob -> String
tjCompiler :: String
, TravisJob -> Maybe String
tjEnv :: Maybe String
, TravisJob -> TravisAddons
tjAddons :: TravisAddons
, TravisJob -> String
tjOS :: String
}
deriving Int -> TravisJob -> ShowS
[TravisJob] -> ShowS
TravisJob -> String
(Int -> TravisJob -> ShowS)
-> (TravisJob -> String)
-> ([TravisJob] -> ShowS)
-> Show TravisJob
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisJob -> ShowS
showsPrec :: Int -> TravisJob -> ShowS
$cshow :: TravisJob -> String
show :: TravisJob -> String
$cshowList :: [TravisJob] -> ShowS
showList :: [TravisJob] -> ShowS
Show
data TravisAddons = TravisAddons
{ TravisAddons -> TravisApt
taApt :: TravisApt
, TravisAddons -> Maybe String
taPostgres :: Maybe String
, TravisAddons -> Bool
taGoogleChrome :: Bool
}
deriving Int -> TravisAddons -> ShowS
[TravisAddons] -> ShowS
TravisAddons -> String
(Int -> TravisAddons -> ShowS)
-> (TravisAddons -> String)
-> ([TravisAddons] -> ShowS)
-> Show TravisAddons
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisAddons -> ShowS
showsPrec :: Int -> TravisAddons -> ShowS
$cshow :: TravisAddons -> String
show :: TravisAddons -> String
$cshowList :: [TravisAddons] -> ShowS
showList :: [TravisAddons] -> ShowS
Show
data TravisApt = TravisApt
{ TravisApt -> [String]
taPackages :: [String]
, TravisApt -> [TravisAptSource]
taSources :: [TravisAptSource]
}
deriving Int -> TravisApt -> ShowS
[TravisApt] -> ShowS
TravisApt -> String
(Int -> TravisApt -> ShowS)
-> (TravisApt -> String)
-> ([TravisApt] -> ShowS)
-> Show TravisApt
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisApt -> ShowS
showsPrec :: Int -> TravisApt -> ShowS
$cshow :: TravisApt -> String
show :: TravisApt -> String
$cshowList :: [TravisApt] -> ShowS
showList :: [TravisApt] -> ShowS
Show
data TravisAptSource
= TravisAptSource String
| TravisAptSourceLine String (Maybe String)
deriving Int -> TravisAptSource -> ShowS
[TravisAptSource] -> ShowS
TravisAptSource -> String
(Int -> TravisAptSource -> ShowS)
-> (TravisAptSource -> String)
-> ([TravisAptSource] -> ShowS)
-> Show TravisAptSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisAptSource -> ShowS
showsPrec :: Int -> TravisAptSource -> ShowS
$cshow :: TravisAptSource -> String
show :: TravisAptSource -> String
$cshowList :: [TravisAptSource] -> ShowS
showList :: [TravisAptSource] -> ShowS
Show
newtype TravisAllowFailure = TravisAllowFailure
{ TravisAllowFailure -> String
tafCompiler :: String
}
deriving Int -> TravisAllowFailure -> ShowS
[TravisAllowFailure] -> ShowS
TravisAllowFailure -> String
(Int -> TravisAllowFailure -> ShowS)
-> (TravisAllowFailure -> String)
-> ([TravisAllowFailure] -> ShowS)
-> Show TravisAllowFailure
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TravisAllowFailure -> ShowS
showsPrec :: Int -> TravisAllowFailure -> ShowS
$cshow :: TravisAllowFailure -> String
show :: TravisAllowFailure -> String
$cshowList :: [TravisAllowFailure] -> ShowS
showList :: [TravisAllowFailure] -> ShowS
Show
(^^^) :: ([String], String, Yaml [String]) -> String -> ([String], String, Yaml [String])
([String]
a,String
b,Yaml [String]
c) ^^^ :: ([String], String, Yaml [String])
-> String -> ([String], String, Yaml [String])
^^^ String
d = (String
d String -> [String] -> [String]
forall a. a -> [a] -> [a]
: [String]
a, String
b, Yaml [String]
c)
shListToYaml :: [Sh] -> Yaml [String]
shListToYaml :: [Sh] -> Yaml [String]
shListToYaml [Sh]
shs = [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
YList [] ([Yaml [String]] -> Yaml [String])
-> [Yaml [String]] -> Yaml [String]
forall a b. (a -> b) -> a -> b
$ [[Yaml [String]]] -> [Yaml [String]]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[ [String] -> String -> Yaml [String]
forall ann. ann -> String -> Yaml ann
YString [String]
cs String
x Yaml [String] -> [Yaml [String]] -> [Yaml [String]]
forall a. a -> [a] -> [a]
: (String -> Yaml [String]) -> [String] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map String -> Yaml [String]
forall a. IsString a => String -> a
fromString [String]
xs
| ([String]
cs, String
x :| [String]
xs) <- [Sh] -> [([String], NonEmpty String)]
gr [Sh]
shs
]
where
gr :: [Sh] -> [([String], NonEmpty String)]
gr :: [Sh] -> [([String], NonEmpty String)]
gr [] = []
gr (Sh String
x : [Sh]
rest) = case [Sh] -> [([String], NonEmpty String)]
gr [Sh]
rest of
([], NonEmpty String
xs) : [([String], NonEmpty String)]
xss -> ([], String -> NonEmpty String -> NonEmpty String
forall a. a -> NonEmpty a -> NonEmpty a
NE.cons String
x NonEmpty String
xs) ([String], NonEmpty String)
-> [([String], NonEmpty String)] -> [([String], NonEmpty String)]
forall a. a -> [a] -> [a]
: [([String], NonEmpty String)]
xss
[([String], NonEmpty String)]
xss -> ([], String -> NonEmpty String
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure String
x) ([String], NonEmpty String)
-> [([String], NonEmpty String)] -> [([String], NonEmpty String)]
forall a. a -> [a] -> [a]
: [([String], NonEmpty String)]
xss
gr (Comment String
c : [Sh]
rest) = case [Sh] -> [([String], NonEmpty String)]
gr [Sh]
rest of
([String]
cs, NonEmpty String
xs) : [([String], NonEmpty String)]
xss -> (String
c String -> [String] -> [String]
forall a. a -> [a] -> [a]
: [String]
cs, NonEmpty String
xs) ([String], NonEmpty String)
-> [([String], NonEmpty String)] -> [([String], NonEmpty String)]
forall a. a -> [a] -> [a]
: [([String], NonEmpty String)]
xss
[] -> []
instance ToYaml Travis where
toYaml :: Travis -> Yaml [String]
toYaml Travis {String
[String]
[Sh]
Ubuntu
TravisAddons
TravisMatrix
TravisNotifications
TravisBranches
TravisCache
TravisGit
travisUbuntu :: Travis -> Ubuntu
travisLanguage :: Travis -> String
travisGit :: Travis -> TravisGit
travisCache :: Travis -> TravisCache
travisBranches :: Travis -> TravisBranches
travisNotifications :: Travis -> TravisNotifications
travisServices :: Travis -> [String]
travisAddons :: Travis -> TravisAddons
travisMatrix :: Travis -> TravisMatrix
travisBeforeCache :: Travis -> [Sh]
travisBeforeInstall :: Travis -> [Sh]
travisInstall :: Travis -> [Sh]
travisScript :: Travis -> [Sh]
travisUbuntu :: Ubuntu
travisLanguage :: String
travisGit :: TravisGit
travisCache :: TravisCache
travisBranches :: TravisBranches
travisNotifications :: TravisNotifications
travisServices :: [String]
travisAddons :: TravisAddons
travisMatrix :: TravisMatrix
travisBeforeCache :: [Sh]
travisBeforeInstall :: [Sh]
travisInstall :: [Sh]
travisScript :: [Sh]
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt []
[ String
"version" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
"~> 1.0"
, String
"language" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
travisLanguage
, String
"os" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
"linux"
, String
"dist" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString (Ubuntu -> String
showUbuntu Ubuntu
travisUbuntu)
, String
"git" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisGit -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisGit
travisGit
, String
"branches" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisBranches -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisBranches
travisBranches
, String
"notifications" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisNotifications -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisNotifications
travisNotifications
, String
"services" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
YList [] ((String -> Yaml [String]) -> [String] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map String -> Yaml [String]
forall a. IsString a => String -> a
fromString [String]
travisServices)
, String
"addons" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisAddons -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisAddons
travisAddons
, String
"cache" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisCache -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisCache
travisCache
, String
"before_cache" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [Sh] -> Yaml [String]
shListToYaml [Sh]
travisBeforeCache
, String
"jobs" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisMatrix -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisMatrix
travisMatrix
, String
"before_install" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [Sh] -> Yaml [String]
shListToYaml [Sh]
travisBeforeInstall
, String
"install" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [Sh] -> Yaml [String]
shListToYaml [Sh]
travisInstall
, String
"script" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [Sh] -> Yaml [String]
shListToYaml [Sh]
travisScript
]
instance ToYaml TravisGit where
toYaml :: TravisGit -> Yaml [String]
toYaml TravisGit {Bool
tgSubmodules :: TravisGit -> Bool
tgSubmodules :: Bool
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt []
[ String
"submodules" String -> Yaml [String] -> ([String], String, Yaml [String])
~> Bool -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml Bool
tgSubmodules
([String], String, Yaml [String])
-> String -> ([String], String, Yaml [String])
^^^ String
"whether to recursively clone submodules"
]
instance ToYaml TravisBranches where
toYaml :: TravisBranches -> Yaml [String]
toYaml TravisBranches {[String]
tbOnly :: TravisBranches -> [String]
tbOnly :: [String]
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt []
[ String
"only" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
ylistFilt [] ((String -> Yaml [String]) -> [String] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map String -> Yaml [String]
forall a. IsString a => String -> a
fromString [String]
tbOnly)
]
instance ToYaml TravisNotifications where
toYaml :: TravisNotifications -> Yaml [String]
toYaml TravisNotifications {Bool
Maybe TravisIRC
tnIRC :: TravisNotifications -> Maybe TravisIRC
tnEmail :: TravisNotifications -> Bool
tnIRC :: Maybe TravisIRC
tnEmail :: Bool
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt [] ([([String], String, Yaml [String])] -> Yaml [String])
-> [([String], String, Yaml [String])] -> Yaml [String]
forall a b. (a -> b) -> a -> b
$ ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall x. ListBuilder x () -> [x]
buildList (ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])])
-> ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall a b. (a -> b) -> a -> b
$ do
Maybe TravisIRC
-> (TravisIRC -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ Maybe TravisIRC
tnIRC ((TravisIRC -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ())
-> (TravisIRC -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ \TravisIRC
y -> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"irc" String -> Yaml [String] -> ([String], String, Yaml [String])
~> TravisIRC -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml TravisIRC
y
Bool
-> ListBuilder ([String], String, Yaml [String]) ()
-> ListBuilder ([String], String, Yaml [String]) ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless Bool
tnEmail (ListBuilder ([String], String, Yaml [String]) ()
-> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"email" String -> Yaml [String] -> ([String], String, Yaml [String])
~> Bool -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml Bool
False
instance ToYaml TravisIRC where
toYaml :: TravisIRC -> Yaml [String]
toYaml TravisIRC {Bool
[String]
Maybe String
tiChannels :: TravisIRC -> [String]
tiSkipJoin :: TravisIRC -> Bool
tiTemplate :: TravisIRC -> [String]
tiNick :: TravisIRC -> Maybe String
tiPassword :: TravisIRC -> Maybe String
tiChannels :: [String]
tiSkipJoin :: Bool
tiTemplate :: [String]
tiNick :: Maybe String
tiPassword :: Maybe String
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt [] ([([String], String, Yaml [String])] -> Yaml [String])
-> [([String], String, Yaml [String])] -> Yaml [String]
forall a b. (a -> b) -> a -> b
$ ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall x. ListBuilder x () -> [x]
buildList (ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])])
-> ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall a b. (a -> b) -> a -> b
$ do
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"channels" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
YList [] ((String -> Yaml [String]) -> [String] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map String -> Yaml [String]
forall a. IsString a => String -> a
fromString [String]
tiChannels)
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"skip_join" String -> Yaml [String] -> ([String], String, Yaml [String])
~> Bool -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml Bool
tiSkipJoin
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"template" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
YList [] ((String -> Yaml [String]) -> [String] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map String -> Yaml [String]
forall a. IsString a => String -> a
fromString [String]
tiTemplate)
Maybe String
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ Maybe String
tiNick ((String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ())
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ \String
n ->
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"nick" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
n
Maybe String
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ Maybe String
tiPassword ((String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ())
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ \String
p ->
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"password" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
p
instance ToYaml TravisCache where
toYaml :: TravisCache -> Yaml [String]
toYaml TravisCache {[String]
tcDirectories :: TravisCache -> [String]
tcDirectories :: [String]
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt []
[ String
"directories" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
ylistFilt []
[ String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
d
| String
d <- [String]
tcDirectories
]
]
instance ToYaml TravisMatrix where
toYaml :: TravisMatrix -> Yaml [String]
toYaml TravisMatrix {[TravisAllowFailure]
[TravisJob]
tmInclude :: TravisMatrix -> [TravisJob]
tmAllowFailures :: TravisMatrix -> [TravisAllowFailure]
tmInclude :: [TravisJob]
tmAllowFailures :: [TravisAllowFailure]
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt []
[ String
"include" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
ylistFilt [] ((TravisJob -> Yaml [String]) -> [TravisJob] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map TravisJob -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml [TravisJob]
tmInclude)
, String
"allow_failures" String -> Yaml [String] -> ([String], String, Yaml [String])
~> [String] -> [Yaml [String]] -> Yaml [String]
forall ann. ann -> [Yaml ann] -> Yaml ann
ylistFilt [] ((TravisAllowFailure -> Yaml [String])
-> [TravisAllowFailure] -> [Yaml [String]]
forall a b. (a -> b) -> [a] -> [b]
map TravisAllowFailure -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml [TravisAllowFailure]
tmAllowFailures)
]
instance ToYaml TravisJob where
toYaml :: TravisJob -> Yaml [String]
toYaml TravisJob {String
Maybe String
TravisAddons
tjCompiler :: TravisJob -> String
tjEnv :: TravisJob -> Maybe String
tjAddons :: TravisJob -> TravisAddons
tjOS :: TravisJob -> String
tjCompiler :: String
tjEnv :: Maybe String
tjAddons :: TravisAddons
tjOS :: String
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt [] ([([String], String, Yaml [String])] -> Yaml [String])
-> [([String], String, Yaml [String])] -> Yaml [String]
forall a b. (a -> b) -> a -> b
$ ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall x. ListBuilder x () -> [x]
buildList (ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])])
-> ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall a b. (a -> b) -> a -> b
$ do
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"compiler" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
tjCompiler
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"addons" String -> Yaml [String] -> ([String], String, Yaml [String])
~> Value -> Yaml [String]
forall a. ToYaml a => a -> Yaml [String]
toYaml (TravisAddons -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON TravisAddons
tjAddons)
Maybe String
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ Maybe String
tjEnv ((String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ())
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ \String
e ->
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"env" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
e
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"os" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
tjOS
instance ToYaml TravisAllowFailure where
toYaml :: TravisAllowFailure -> Yaml [String]
toYaml TravisAllowFailure {String
tafCompiler :: TravisAllowFailure -> String
tafCompiler :: String
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt []
[ String
"compiler" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
tafCompiler
]
instance ToYaml TravisAddons where
toYaml :: TravisAddons -> Yaml [String]
toYaml TravisAddons {Bool
Maybe String
TravisApt
taApt :: TravisAddons -> TravisApt
taPostgres :: TravisAddons -> Maybe String
taGoogleChrome :: TravisAddons -> Bool
taApt :: TravisApt
taPostgres :: Maybe String
taGoogleChrome :: Bool
..} = [String] -> [([String], String, Yaml [String])] -> Yaml [String]
forall ann. ann -> [(ann, String, Yaml ann)] -> Yaml ann
ykeyValuesFilt [] ([([String], String, Yaml [String])] -> Yaml [String])
-> [([String], String, Yaml [String])] -> Yaml [String]
forall a b. (a -> b) -> a -> b
$ ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall x. ListBuilder x () -> [x]
buildList (ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])])
-> ListBuilder ([String], String, Yaml [String]) ()
-> [([String], String, Yaml [String])]
forall a b. (a -> b) -> a -> b
$ do
Maybe String
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ Maybe String
taPostgres ((String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ())
-> (String -> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ \String
p ->
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"postgresql" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
p
Bool
-> ListBuilder ([String], String, Yaml [String]) ()
-> ListBuilder ([String], String, Yaml [String]) ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
taGoogleChrome (ListBuilder ([String], String, Yaml [String]) ()
-> ListBuilder ([String], String, Yaml [String]) ())
-> ListBuilder ([String], String, Yaml [String]) ()
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$
([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall x. x -> ListBuilder x ()
item (([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ())
-> ([String], String, Yaml [String])
-> ListBuilder ([String], String, Yaml [String]) ()
forall a b. (a -> b) -> a -> b
$ String
"google" String -> Yaml [String] -> ([String], String, Yaml [String])
~> String -> Yaml [String]
forall a. IsString a => String -> a
fromString String
"stable"
instance Aeson.ToJSON TravisAddons where
toJSON :: TravisAddons -> Value
toJSON TravisAddons {Bool
Maybe String
TravisApt
taApt :: TravisAddons -> TravisApt
taPostgres :: TravisAddons -> Maybe String
taGoogleChrome :: TravisAddons -> Bool
taApt :: TravisApt
taPostgres :: Maybe String
taGoogleChrome :: Bool
..} = [Pair] -> Value
Aeson.object
[ Key
"apt" Key -> TravisApt -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= TravisApt
taApt
]
instance Aeson.ToJSON TravisApt where
toJSON :: TravisApt -> Value
toJSON TravisApt {[String]
[TravisAptSource]
taPackages :: TravisApt -> [String]
taSources :: TravisApt -> [TravisAptSource]
taPackages :: [String]
taSources :: [TravisAptSource]
..} = [Pair] -> Value
Aeson.object
[ Key
"packages" Key -> [String] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= [String]
taPackages
, Key
"sources" Key -> [TravisAptSource] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= [TravisAptSource]
taSources
]
instance Aeson.ToJSON TravisAptSource where
toJSON :: TravisAptSource -> Value
toJSON (TravisAptSource String
s) = String -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON String
s
toJSON (TravisAptSourceLine String
sl Maybe String
Nothing) = [Pair] -> Value
Aeson.object
[ Key
"sourceline" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= String
sl
]
toJSON (TravisAptSourceLine String
sl (Just String
key_url)) = [Pair] -> Value
Aeson.object
[ Key
"sourceline" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= String
sl
, Key
"key_url" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= String
key_url
]