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
{ NixStyleFlags a -> ConfigFlags
configFlags :: ConfigFlags
, NixStyleFlags a -> ConfigExFlags
configExFlags :: ConfigExFlags
, NixStyleFlags a -> InstallFlags
installFlags :: InstallFlags
, NixStyleFlags a -> HaddockFlags
haddockFlags :: HaddockFlags
, NixStyleFlags a -> TestFlags
testFlags :: TestFlags
, NixStyleFlags a -> BenchmarkFlags
benchmarkFlags :: BenchmarkFlags
, NixStyleFlags a -> ProjectFlags
projectFlags :: ProjectFlags
, :: a
}
nixStyleOptions
:: (ShowOrParseArgs -> [OptionField a])
-> ShowOrParseArgs -> [OptionField (NixStyleFlags a)]
nixStyleOptions :: (ShowOrParseArgs -> [OptionField a])
-> ShowOrParseArgs -> [OptionField (NixStyleFlags a)]
nixStyleOptions ShowOrParseArgs -> [OptionField a]
commandOptions ShowOrParseArgs
showOrParseArgs =
(NixStyleFlags a -> ConfigFlags)
-> (ConfigFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField ConfigFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> ConfigFlags
forall a. NixStyleFlags a -> ConfigFlags
configFlags ConfigFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. ConfigFlags -> NixStyleFlags a -> NixStyleFlags a
set1
((OptionField ConfigFlags -> Bool)
-> [OptionField ConfigFlags] -> [OptionField ConfigFlags]
forall a. (a -> Bool) -> [a] -> [a]
filter (([Char] -> [[Char]] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [[Char]
"constraint", [Char]
"dependency"
, [Char]
"exact-configuration"])
([Char] -> Bool)
-> (OptionField ConfigFlags -> [Char])
-> OptionField ConfigFlags
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OptionField ConfigFlags -> [Char]
forall a. OptionField a -> [Char]
optionName) ([OptionField ConfigFlags] -> [OptionField ConfigFlags])
-> [OptionField ConfigFlags] -> [OptionField ConfigFlags]
forall a b. (a -> b) -> a -> b
$ ShowOrParseArgs -> [OptionField ConfigFlags]
configureOptions ShowOrParseArgs
showOrParseArgs)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> ConfigExFlags)
-> (ConfigExFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField ConfigExFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> ConfigExFlags
forall a. NixStyleFlags a -> ConfigExFlags
configExFlags ConfigExFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. ConfigExFlags -> NixStyleFlags a -> NixStyleFlags a
set2 (ShowOrParseArgs -> ConstraintSource -> [OptionField ConfigExFlags]
configureExOptions ShowOrParseArgs
showOrParseArgs
ConstraintSource
ConstraintSourceCommandlineFlag)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> InstallFlags)
-> (InstallFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField InstallFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> InstallFlags
forall a. NixStyleFlags a -> InstallFlags
installFlags InstallFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. InstallFlags -> NixStyleFlags a -> NixStyleFlags a
set3
((OptionField InstallFlags -> Bool)
-> [OptionField InstallFlags] -> [OptionField InstallFlags]
forall a. (a -> Bool) -> [a] -> [a]
filter (([Char] -> [[Char]] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [[Char]
"target-package-db", [Char]
"symlink-bindir"])
([Char] -> Bool)
-> (OptionField InstallFlags -> [Char])
-> OptionField InstallFlags
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OptionField InstallFlags -> [Char]
forall a. OptionField a -> [Char]
optionName) ([OptionField InstallFlags] -> [OptionField InstallFlags])
-> [OptionField InstallFlags] -> [OptionField InstallFlags]
forall a b. (a -> b) -> a -> b
$
ShowOrParseArgs -> [OptionField InstallFlags]
installOptions ShowOrParseArgs
showOrParseArgs)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> HaddockFlags)
-> (HaddockFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField HaddockFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> HaddockFlags
forall a. NixStyleFlags a -> HaddockFlags
haddockFlags HaddockFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. HaddockFlags -> NixStyleFlags a -> NixStyleFlags a
set4
((OptionField HaddockFlags -> Bool)
-> [OptionField HaddockFlags] -> [OptionField HaddockFlags]
forall a. (a -> Bool) -> [a] -> [a]
filter (([Char] -> [[Char]] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [[Char]
"v", [Char]
"verbose", [Char]
"builddir"])
([Char] -> Bool)
-> (OptionField HaddockFlags -> [Char])
-> OptionField HaddockFlags
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OptionField HaddockFlags -> [Char]
forall a. OptionField a -> [Char]
optionName) ([OptionField HaddockFlags] -> [OptionField HaddockFlags])
-> [OptionField HaddockFlags] -> [OptionField HaddockFlags]
forall a b. (a -> b) -> a -> b
$
ShowOrParseArgs -> [OptionField HaddockFlags]
haddockOptions ShowOrParseArgs
showOrParseArgs)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> TestFlags)
-> (TestFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField TestFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> TestFlags
forall a. NixStyleFlags a -> TestFlags
testFlags TestFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. TestFlags -> NixStyleFlags a -> NixStyleFlags a
set5 (ShowOrParseArgs -> [OptionField TestFlags]
testOptions ShowOrParseArgs
showOrParseArgs)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> BenchmarkFlags)
-> (BenchmarkFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField BenchmarkFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> BenchmarkFlags
forall a. NixStyleFlags a -> BenchmarkFlags
benchmarkFlags BenchmarkFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. BenchmarkFlags -> NixStyleFlags a -> NixStyleFlags a
set6 (ShowOrParseArgs -> [OptionField BenchmarkFlags]
benchmarkOptions ShowOrParseArgs
showOrParseArgs)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> ProjectFlags)
-> (ProjectFlags -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField ProjectFlags]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> ProjectFlags
forall a. NixStyleFlags a -> ProjectFlags
projectFlags ProjectFlags -> NixStyleFlags a -> NixStyleFlags a
forall a. ProjectFlags -> NixStyleFlags a -> NixStyleFlags a
set7 (ShowOrParseArgs -> [OptionField ProjectFlags]
projectFlagsOptions ShowOrParseArgs
showOrParseArgs)
[OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
-> [OptionField (NixStyleFlags a)]
forall a. [a] -> [a] -> [a]
++ (NixStyleFlags a -> a)
-> (a -> NixStyleFlags a -> NixStyleFlags a)
-> [OptionField a]
-> [OptionField (NixStyleFlags a)]
forall b a.
(b -> a) -> (a -> b -> b) -> [OptionField a] -> [OptionField b]
liftOptions NixStyleFlags a -> a
forall a. NixStyleFlags a -> a
extraFlags a -> NixStyleFlags a -> NixStyleFlags a
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 :: a -> NixStyleFlags a
defaultNixStyleFlags a
x = NixStyleFlags :: forall a.
ConfigFlags
-> ConfigExFlags
-> InstallFlags
-> HaddockFlags
-> TestFlags
-> BenchmarkFlags
-> ProjectFlags
-> a
-> NixStyleFlags a
NixStyleFlags
{ configFlags :: ConfigFlags
configFlags = ConfigFlags
forall a. Monoid a => a
mempty
, configExFlags :: ConfigExFlags
configExFlags = ConfigExFlags
forall a. Monoid a => a
mempty
, installFlags :: InstallFlags
installFlags = InstallFlags
forall a. Monoid a => a
mempty
, haddockFlags :: HaddockFlags
haddockFlags = HaddockFlags
forall a. Monoid a => a
mempty
, testFlags :: TestFlags
testFlags = TestFlags
forall a. Monoid a => a
mempty
, benchmarkFlags :: BenchmarkFlags
benchmarkFlags = BenchmarkFlags
forall a. Monoid a => a
mempty
, projectFlags :: ProjectFlags
projectFlags = ProjectFlags
defaultProjectFlags
, extraFlags :: a
extraFlags = a
x
}