module Distribution.Client.NixStyleOptions (
NixStyleFlags (..),
nixStyleOptions,
defaultNixStyleFlags,
) where
import Distribution.Client.Compat.Prelude
import Prelude ()
import Distribution.Simple.Command (OptionField (..), ShowOrParseArgs)
import Distribution.Simple.Setup (BenchmarkFlags, HaddockFlags, TestFlags)
import Distribution.Solver.Types.ConstraintSource (ConstraintSource (..))
import Distribution.Client.ProjectFlags
(ProjectFlags (..), defaultProjectFlags, projectFlagsOptions)
import Distribution.Client.Setup
(ConfigExFlags, ConfigFlags (..), InstallFlags (..), benchmarkOptions, configureExOptions,
configureOptions, haddockOptions, installOptions, liftOptions, testOptions)
data NixStyleFlags a = NixStyleFlags
{ forall a. NixStyleFlags a -> ConfigFlags
configFlags :: ConfigFlags
, forall a. NixStyleFlags a -> ConfigExFlags
configExFlags :: ConfigExFlags
, forall a. NixStyleFlags a -> InstallFlags
installFlags :: InstallFlags
, forall a. NixStyleFlags a -> HaddockFlags
haddockFlags :: HaddockFlags
, forall a. NixStyleFlags a -> TestFlags
testFlags :: TestFlags
, forall a. NixStyleFlags a -> BenchmarkFlags
benchmarkFlags :: BenchmarkFlags
, forall a. NixStyleFlags a -> ProjectFlags
projectFlags :: ProjectFlags
, :: a
}
nixStyleOptions
:: (ShowOrParseArgs -> [OptionField a])
-> ShowOrParseArgs -> [OptionField (NixStyleFlags a)]
nixStyleOptions :: forall a.
(ShowOrParseArgs -> [OptionField a])
-> ShowOrParseArgs -> [OptionField (NixStyleFlags a)]
nixStyleOptions ShowOrParseArgs -> [OptionField a]
commandOptions ShowOrParseArgs
showOrParseArgs =
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> ConfigFlags
configFlags forall {a}. ConfigFlags -> NixStyleFlags a -> NixStyleFlags a
set1
(forall a. (a -> Bool) -> [a] -> [a]
filter ((forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [String
"constraint", String
"dependency"
, String
"exact-configuration"])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. OptionField a -> String
optionName) forall a b. (a -> b) -> a -> b
$ ShowOrParseArgs -> [OptionField ConfigFlags]
configureOptions ShowOrParseArgs
showOrParseArgs)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> ConfigExFlags
configExFlags forall {a}. ConfigExFlags -> NixStyleFlags a -> NixStyleFlags a
set2 (ShowOrParseArgs -> ConstraintSource -> [OptionField ConfigExFlags]
configureExOptions ShowOrParseArgs
showOrParseArgs
ConstraintSource
ConstraintSourceCommandlineFlag)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> InstallFlags
installFlags forall {a}. InstallFlags -> NixStyleFlags a -> NixStyleFlags a
set3
(forall a. (a -> Bool) -> [a] -> [a]
filter ((forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [String
"target-package-db", String
"symlink-bindir"])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. OptionField a -> String
optionName) forall a b. (a -> b) -> a -> b
$
ShowOrParseArgs -> [OptionField InstallFlags]
installOptions ShowOrParseArgs
showOrParseArgs)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> HaddockFlags
haddockFlags forall {a}. HaddockFlags -> NixStyleFlags a -> NixStyleFlags a
set4
(forall a. (a -> Bool) -> [a] -> [a]
filter ((forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [String
"v", String
"verbose", String
"builddir"])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. OptionField a -> String
optionName) forall a b. (a -> b) -> a -> b
$
ShowOrParseArgs -> [OptionField HaddockFlags]
haddockOptions ShowOrParseArgs
showOrParseArgs)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> TestFlags
testFlags forall {a}. TestFlags -> NixStyleFlags a -> NixStyleFlags a
set5 (ShowOrParseArgs -> [OptionField TestFlags]
testOptions ShowOrParseArgs
showOrParseArgs)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> BenchmarkFlags
benchmarkFlags forall {a}. BenchmarkFlags -> NixStyleFlags a -> NixStyleFlags a
set6 (ShowOrParseArgs -> [OptionField BenchmarkFlags]
benchmarkOptions ShowOrParseArgs
showOrParseArgs)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> ProjectFlags
projectFlags forall {a}. ProjectFlags -> NixStyleFlags a -> NixStyleFlags a
set7 (ShowOrParseArgs -> [OptionField ProjectFlags]
projectFlagsOptions ShowOrParseArgs
showOrParseArgs)
forall a. [a] -> [a] -> [a]
++ forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions forall a. NixStyleFlags a -> a
extraFlags forall {a} {a}. a -> NixStyleFlags a -> NixStyleFlags a
set8 (ShowOrParseArgs -> [OptionField a]
commandOptions ShowOrParseArgs
showOrParseArgs)
where
set1 :: ConfigFlags -> NixStyleFlags a -> NixStyleFlags a
set1 ConfigFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { configFlags :: ConfigFlags
configFlags = ConfigFlags
x }
set2 :: ConfigExFlags -> NixStyleFlags a -> NixStyleFlags a
set2 ConfigExFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { configExFlags :: ConfigExFlags
configExFlags = ConfigExFlags
x }
set3 :: InstallFlags -> NixStyleFlags a -> NixStyleFlags a
set3 InstallFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { installFlags :: InstallFlags
installFlags = InstallFlags
x }
set4 :: HaddockFlags -> NixStyleFlags a -> NixStyleFlags a
set4 HaddockFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { haddockFlags :: HaddockFlags
haddockFlags = HaddockFlags
x }
set5 :: TestFlags -> NixStyleFlags a -> NixStyleFlags a
set5 TestFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { testFlags :: TestFlags
testFlags = TestFlags
x }
set6 :: BenchmarkFlags -> NixStyleFlags a -> NixStyleFlags a
set6 BenchmarkFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { benchmarkFlags :: BenchmarkFlags
benchmarkFlags = BenchmarkFlags
x }
set7 :: ProjectFlags -> NixStyleFlags a -> NixStyleFlags a
set7 ProjectFlags
x NixStyleFlags a
flags = NixStyleFlags a
flags { projectFlags :: ProjectFlags
projectFlags = ProjectFlags
x }
set8 :: a -> NixStyleFlags a -> NixStyleFlags a
set8 a
x NixStyleFlags a
flags = NixStyleFlags a
flags { extraFlags :: a
extraFlags = a
x }
defaultNixStyleFlags :: a -> NixStyleFlags a
defaultNixStyleFlags :: forall a. a -> NixStyleFlags a
defaultNixStyleFlags a
x = NixStyleFlags
{ configFlags :: ConfigFlags
configFlags = forall a. Monoid a => a
mempty
, configExFlags :: ConfigExFlags
configExFlags = forall a. Monoid a => a
mempty
, installFlags :: InstallFlags
installFlags = forall a. Monoid a => a
mempty
, haddockFlags :: HaddockFlags
haddockFlags = forall a. Monoid a => a
mempty
, testFlags :: TestFlags
testFlags = forall a. Monoid a => a
mempty
, benchmarkFlags :: BenchmarkFlags
benchmarkFlags = forall a. Monoid a => a
mempty
, projectFlags :: ProjectFlags
projectFlags = ProjectFlags
defaultProjectFlags
, extraFlags :: a
extraFlags = a
x
}