Autoformat Config.hs
parent
03e2b62c24
commit
fad9db8fd8
|
@ -31,18 +31,22 @@ import Data.CZipWith
|
||||||
import UI.Butcher.Monadic
|
import UI.Butcher.Monadic
|
||||||
import Data.Monoid ( (<>) )
|
import Data.Monoid ( (<>) )
|
||||||
|
|
||||||
import qualified System.Console.CmdArgs.Explicit as CmdArgs
|
import qualified System.Console.CmdArgs.Explicit
|
||||||
|
as CmdArgs
|
||||||
|
|
||||||
import Language.Haskell.Brittany.Internal.Config.Types
|
import Language.Haskell.Brittany.Internal.Config.Types
|
||||||
import Language.Haskell.Brittany.Internal.Config.Types.Instances
|
import Language.Haskell.Brittany.Internal.Config.Types.Instances
|
||||||
import Language.Haskell.Brittany.Internal.Utils
|
import Language.Haskell.Brittany.Internal.Utils
|
||||||
|
|
||||||
import Data.Coerce ( Coercible, coerce )
|
import Data.Coerce ( Coercible
|
||||||
|
, coerce
|
||||||
|
)
|
||||||
import qualified Data.List.NonEmpty as NonEmpty
|
import qualified Data.List.NonEmpty as NonEmpty
|
||||||
|
|
||||||
import qualified System.Directory as Directory
|
import qualified System.Directory as Directory
|
||||||
import qualified System.FilePath.Posix as FilePath
|
import qualified System.FilePath.Posix as FilePath
|
||||||
|
|
||||||
|
-- brittany-next-binding { lconfig_indentPolicy: IndentPolicyLeft }
|
||||||
staticDefaultConfig :: Config
|
staticDefaultConfig :: Config
|
||||||
staticDefaultConfig = Config
|
staticDefaultConfig = Config
|
||||||
{ _conf_version = coerce (1 :: Int)
|
{ _conf_version = coerce (1 :: Int)
|
||||||
|
@ -89,9 +93,7 @@ staticDefaultConfig = Config
|
||||||
{ _ppconf_CPPMode = coerce CPPModeAbort
|
{ _ppconf_CPPMode = coerce CPPModeAbort
|
||||||
, _ppconf_hackAroundIncludes = coerce False
|
, _ppconf_hackAroundIncludes = coerce False
|
||||||
}
|
}
|
||||||
, _conf_forward = ForwardOptions
|
, _conf_forward = ForwardOptions { _options_ghc = Identity [] }
|
||||||
{ _options_ghc = Identity []
|
|
||||||
}
|
|
||||||
, _conf_roundtrip_exactprint_only = coerce False
|
, _conf_roundtrip_exactprint_only = coerce False
|
||||||
, _conf_disable_formatting = coerce False
|
, _conf_disable_formatting = coerce False
|
||||||
, _conf_obfuscate = coerce False
|
, _conf_obfuscate = coerce False
|
||||||
|
@ -115,7 +117,7 @@ forwardOptionsSyntaxExtsEnabled = ForwardOptions
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
-- brittany-next-binding --columns=200
|
-- brittany-next-binding { lconfig_indentPolicy: IndentPolicyLeft, lconfig_cols: 200 }
|
||||||
cmdlineConfigParser :: CmdParser Identity out (CConfig Option)
|
cmdlineConfigParser :: CmdParser Identity out (CConfig Option)
|
||||||
cmdlineConfigParser = do
|
cmdlineConfigParser = do
|
||||||
-- TODO: why does the default not trigger; ind never should be []!!
|
-- TODO: why does the default not trigger; ind never should be []!!
|
||||||
|
@ -131,9 +133,7 @@ cmdlineConfigParser = do
|
||||||
dumpBriDocRaw <- addSimpleBoolFlag "" ["dump-bridoc-raw"] (flagHelp $ parDoc "dump the pre-transformation bridoc")
|
dumpBriDocRaw <- addSimpleBoolFlag "" ["dump-bridoc-raw"] (flagHelp $ parDoc "dump the pre-transformation bridoc")
|
||||||
dumpBriDocAlt <- addSimpleBoolFlag "" ["dump-bridoc-alt"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: alt")
|
dumpBriDocAlt <- addSimpleBoolFlag "" ["dump-bridoc-alt"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: alt")
|
||||||
dumpBriDocPar <- addSimpleBoolFlag "" ["dump-bridoc-par"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: par")
|
dumpBriDocPar <- addSimpleBoolFlag "" ["dump-bridoc-par"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: par")
|
||||||
dumpBriDocFloating <- addSimpleBoolFlag ""
|
dumpBriDocFloating <- addSimpleBoolFlag "" ["dump-bridoc-floating"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: floating")
|
||||||
["dump-bridoc-floating"]
|
|
||||||
(flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: floating")
|
|
||||||
dumpBriDocColumns <- addSimpleBoolFlag "" ["dump-bridoc-columns"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: columns")
|
dumpBriDocColumns <- addSimpleBoolFlag "" ["dump-bridoc-columns"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: columns")
|
||||||
dumpBriDocIndent <- addSimpleBoolFlag "" ["dump-bridoc-indent"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: indent")
|
dumpBriDocIndent <- addSimpleBoolFlag "" ["dump-bridoc-indent"] (flagHelp $ parDoc "dump the partially transformed bridoc: after transformation: indent")
|
||||||
dumpBriDocFinal <- addSimpleBoolFlag "" ["dump-bridoc-final"] (flagHelp $ parDoc "dump the post-transformation bridoc")
|
dumpBriDocFinal <- addSimpleBoolFlag "" ["dump-bridoc-final"] (flagHelp $ parDoc "dump the post-transformation bridoc")
|
||||||
|
@ -144,10 +144,7 @@ cmdlineConfigParser = do
|
||||||
|
|
||||||
roundtripOnly <- addSimpleBoolFlag "" ["exactprint-only"] (flagHelp $ parDoc "do not reformat, but exclusively use exactprint to roundtrip (debugging)")
|
roundtripOnly <- addSimpleBoolFlag "" ["exactprint-only"] (flagHelp $ parDoc "do not reformat, but exclusively use exactprint to roundtrip (debugging)")
|
||||||
|
|
||||||
optionsGhc <- addFlagStringParams ""
|
optionsGhc <- addFlagStringParams "" ["ghc-options"] "STRING" (flagHelp $ parDoc "allows to define default language extensions. The parameter is forwarded to ghc.")
|
||||||
["ghc-options"]
|
|
||||||
"STRING"
|
|
||||||
(flagHelp $ parDoc "allows to define default language extensions. The parameter is forwarded to ghc.")
|
|
||||||
disableFormatting <- addSimpleBoolFlag "" ["disable-formatting"] (flagHelp $ parDoc "parse, but don't transform the input at all. Useful for inline config for specific modules.")
|
disableFormatting <- addSimpleBoolFlag "" ["disable-formatting"] (flagHelp $ parDoc "parse, but don't transform the input at all. Useful for inline config for specific modules.")
|
||||||
obfuscate <- addSimpleBoolFlag "" ["obfuscate"] (flagHelp $ parDoc "apply obfuscator to the output.")
|
obfuscate <- addSimpleBoolFlag "" ["obfuscate"] (flagHelp $ parDoc "apply obfuscator to the output.")
|
||||||
|
|
||||||
|
@ -192,13 +189,8 @@ cmdlineConfigParser = do
|
||||||
, _econf_ExactPrintFallback = mempty
|
, _econf_ExactPrintFallback = mempty
|
||||||
, _econf_omit_output_valid_check = wrapLast $ falseToNothing omitValidCheck
|
, _econf_omit_output_valid_check = wrapLast $ falseToNothing omitValidCheck
|
||||||
}
|
}
|
||||||
, _conf_preprocessor = PreProcessorConfig
|
, _conf_preprocessor = PreProcessorConfig { _ppconf_CPPMode = mempty, _ppconf_hackAroundIncludes = mempty }
|
||||||
{ _ppconf_CPPMode = mempty
|
, _conf_forward = ForwardOptions { _options_ghc = [ optionsGhc & List.unwords & CmdArgs.splitArgs | not $ null optionsGhc ] }
|
||||||
, _ppconf_hackAroundIncludes = mempty
|
|
||||||
}
|
|
||||||
, _conf_forward = ForwardOptions
|
|
||||||
{ _options_ghc = [ optionsGhc & List.unwords & CmdArgs.splitArgs | not $ null optionsGhc ]
|
|
||||||
}
|
|
||||||
, _conf_roundtrip_exactprint_only = wrapLast $ falseToNothing roundtripOnly
|
, _conf_roundtrip_exactprint_only = wrapLast $ falseToNothing roundtripOnly
|
||||||
, _conf_disable_formatting = wrapLast $ falseToNothing disableFormatting
|
, _conf_disable_formatting = wrapLast $ falseToNothing disableFormatting
|
||||||
, _conf_obfuscate = wrapLast $ falseToNothing obfuscate
|
, _conf_obfuscate = wrapLast $ falseToNothing obfuscate
|
||||||
|
@ -265,7 +257,9 @@ userConfigPath = do
|
||||||
userBritPathSimple <- Directory.getAppUserDataDirectory "brittany"
|
userBritPathSimple <- Directory.getAppUserDataDirectory "brittany"
|
||||||
userBritPathXdg <- Directory.getXdgDirectory Directory.XdgConfig "brittany"
|
userBritPathXdg <- Directory.getXdgDirectory Directory.XdgConfig "brittany"
|
||||||
let searchDirs = [userBritPathSimple, userBritPathXdg]
|
let searchDirs = [userBritPathSimple, userBritPathXdg]
|
||||||
globalConfig <- Directory.findFileWith Directory.doesFileExist searchDirs "config.yaml"
|
globalConfig <- Directory.findFileWith Directory.doesFileExist
|
||||||
|
searchDirs
|
||||||
|
"config.yaml"
|
||||||
maybe (writeUserConfig userBritPathXdg) pure globalConfig
|
maybe (writeUserConfig userBritPathXdg) pure globalConfig
|
||||||
where
|
where
|
||||||
writeUserConfig dir = do
|
writeUserConfig dir = do
|
||||||
|
@ -289,7 +283,8 @@ readConfigs
|
||||||
-> MaybeT IO Config
|
-> MaybeT IO Config
|
||||||
readConfigs cmdlineConfig configPaths = do
|
readConfigs cmdlineConfig configPaths = do
|
||||||
configs <- readConfig `mapM` configPaths
|
configs <- readConfig `mapM` configPaths
|
||||||
let merged = Semigroup.sconcat $ NonEmpty.reverse (cmdlineConfig :| catMaybes configs)
|
let merged = Semigroup.sconcat
|
||||||
|
$ NonEmpty.reverse (cmdlineConfig :| catMaybes configs)
|
||||||
return $ cZipWith fromOptionIdentity staticDefaultConfig merged
|
return $ cZipWith fromOptionIdentity staticDefaultConfig merged
|
||||||
|
|
||||||
-- | Reads provided configs
|
-- | Reads provided configs
|
||||||
|
@ -309,7 +304,6 @@ writeDefaultConfig path =
|
||||||
staticDefaultConfig
|
staticDefaultConfig
|
||||||
|
|
||||||
showConfigYaml :: Config -> String
|
showConfigYaml :: Config -> String
|
||||||
showConfigYaml = Data.ByteString.Char8.unpack
|
showConfigYaml = Data.ByteString.Char8.unpack . Data.Yaml.encode . cMap
|
||||||
. Data.Yaml.encode
|
(\(Identity x) -> Just x)
|
||||||
. cMap (\(Identity x) -> Just x)
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue