{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Stack.Path
( path
, pathParser
) where
import Stack.Prelude
import Data.List (intercalate)
import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified Options.Applicative as OA
import Path
import Path.Extra
import Stack.Constants
import Stack.Constants.Config
import Stack.GhcPkg as GhcPkg
import Stack.Runners
import Stack.Types.Config
import qualified System.FilePath as FP
import RIO.PrettyPrint
import RIO.Process (HasProcessContext (..), exeSearchPathL)
path :: [Text] -> RIO Runner ()
path :: [Text] -> RIO Runner ()
path [Text]
keys =
do let deprecated :: [(Text, Text)]
deprecated = ((Text, Text) -> Bool) -> [(Text, Text)] -> [(Text, Text)]
forall a. (a -> Bool) -> [a] -> [a]
filter ((Text -> [Text] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [Text]
keys) (Text -> Bool) -> ((Text, Text) -> Text) -> (Text, Text) -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text, Text) -> Text
forall a b. (a, b) -> a
fst) [(Text, Text)]
deprecatedPathKeys
[(Text, Text)] -> ((Text, Text) -> RIO Runner ()) -> RIO Runner ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [(Text, Text)]
deprecated (((Text, Text) -> RIO Runner ()) -> RIO Runner ())
-> ((Text, Text) -> RIO Runner ()) -> RIO Runner ()
forall a b. (a -> b) -> a -> b
$ \(Text
oldOption, Text
newOption) -> Utf8Builder -> RIO Runner ()
forall (m :: * -> *) env.
(MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) =>
Utf8Builder -> m ()
logWarn (Utf8Builder -> RIO Runner ()) -> Utf8Builder -> RIO Runner ()
forall a b. (a -> b) -> a -> b
$
Utf8Builder
"\n" Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<>
Utf8Builder
"'--" Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<> Text -> Utf8Builder
forall a. Display a => a -> Utf8Builder
display Text
oldOption Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<> Utf8Builder
"' will be removed in a future release.\n" Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<>
Utf8Builder
"Please use '--" Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<> Text -> Utf8Builder
forall a. Display a => a -> Utf8Builder
display Text
newOption Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<> Utf8Builder
"' instead.\n" Utf8Builder -> Utf8Builder -> Utf8Builder
forall a. Semigroup a => a -> a -> a
<>
Utf8Builder
"\n"
let
goodPaths :: [(String, Text, UseHaddocks (PathInfo -> Text))]
goodPaths = ((String, Text, UseHaddocks (PathInfo -> Text)) -> Bool)
-> [(String, Text, UseHaddocks (PathInfo -> Text))]
-> [(String, Text, UseHaddocks (PathInfo -> Text))]
forall a. (a -> Bool) -> [a] -> [a]
filter
(\(String
_,Text
key,UseHaddocks (PathInfo -> Text)
_) ->
([Text] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [Text]
keys Bool -> Bool -> Bool
&& Text
key Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
/= String -> Text
T.pack String
deprecatedStackRootOptionName) Bool -> Bool -> Bool
|| Text -> [Text] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem Text
key [Text]
keys)
[(String, Text, UseHaddocks (PathInfo -> Text))]
paths
singlePath :: Bool
singlePath = [(String, Text, UseHaddocks (PathInfo -> Text))] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(String, Text, UseHaddocks (PathInfo -> Text))]
goodPaths Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1
toEither :: (a, a, UseHaddocks b) -> Either (a, b) (a, b)
toEither (a
_, a
k, UseHaddocks b
p) = (a, b) -> Either (a, b) (a, b)
forall a b. a -> Either a b
Left (a
k, b
p)
toEither (a
_, a
k, WithoutHaddocks b
p) = (a, b) -> Either (a, b) (a, b)
forall a b. b -> Either a b
Right (a
k, b
p)
([(Text, PathInfo -> Text)]
with, [(Text, PathInfo -> Text)]
without) = [Either (Text, PathInfo -> Text) (Text, PathInfo -> Text)]
-> ([(Text, PathInfo -> Text)], [(Text, PathInfo -> Text)])
forall a b. [Either a b] -> ([a], [b])
partitionEithers ([Either (Text, PathInfo -> Text) (Text, PathInfo -> Text)]
-> ([(Text, PathInfo -> Text)], [(Text, PathInfo -> Text)]))
-> [Either (Text, PathInfo -> Text) (Text, PathInfo -> Text)]
-> ([(Text, PathInfo -> Text)], [(Text, PathInfo -> Text)])
forall a b. (a -> b) -> a -> b
$ ((String, Text, UseHaddocks (PathInfo -> Text))
-> Either (Text, PathInfo -> Text) (Text, PathInfo -> Text))
-> [(String, Text, UseHaddocks (PathInfo -> Text))]
-> [Either (Text, PathInfo -> Text) (Text, PathInfo -> Text)]
forall a b. (a -> b) -> [a] -> [b]
map (String, Text, UseHaddocks (PathInfo -> Text))
-> Either (Text, PathInfo -> Text) (Text, PathInfo -> Text)
forall a a b. (a, a, UseHaddocks b) -> Either (a, b) (a, b)
toEither [(String, Text, UseHaddocks (PathInfo -> Text))]
goodPaths
printKeys :: t (Text, PathInfo -> Text) -> Bool -> RIO env ()
printKeys t (Text, PathInfo -> Text)
extractors Bool
single = do
PathInfo
pathInfo <- RIO env PathInfo
forall env. HasEnvConfig env => RIO env PathInfo
fillPathInfo
IO () -> RIO env ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> RIO env ()) -> IO () -> RIO env ()
forall a b. (a -> b) -> a -> b
$ t (Text, PathInfo -> Text)
-> ((Text, PathInfo -> Text) -> IO ()) -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ t (Text, PathInfo -> Text)
extractors (((Text, PathInfo -> Text) -> IO ()) -> IO ())
-> ((Text, PathInfo -> Text) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \(Text
key, PathInfo -> Text
extractPath) -> do
let prefix :: Text
prefix = if Bool
single then Text
"" else Text
key Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
": "
Text -> IO ()
T.putStrLn (Text -> IO ()) -> Text -> IO ()
forall a b. (a -> b) -> a -> b
$ Text
prefix Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> PathInfo -> Text
extractPath PathInfo
pathInfo
runHaddock :: Bool -> RIO EnvConfig a -> RIO Runner a
runHaddock Bool
x = (Runner -> Runner) -> RIO Runner a -> RIO Runner a
forall r (m :: * -> *) a. MonadReader r m => (r -> r) -> m a -> m a
local
(ASetter Runner Runner (Maybe Bool) (Maybe Bool)
-> Maybe Bool -> Runner -> Runner
forall s t a b. ASetter s t a b -> b -> s -> t
set ((GlobalOpts -> Identity GlobalOpts) -> Runner -> Identity Runner
forall env. HasRunner env => Lens' env GlobalOpts
globalOptsL((GlobalOpts -> Identity GlobalOpts) -> Runner -> Identity Runner)
-> ((Maybe Bool -> Identity (Maybe Bool))
-> GlobalOpts -> Identity GlobalOpts)
-> ASetter Runner Runner (Maybe Bool) (Maybe Bool)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(BuildOptsMonoid -> Identity BuildOptsMonoid)
-> GlobalOpts -> Identity GlobalOpts
Lens' GlobalOpts BuildOptsMonoid
globalOptsBuildOptsMonoidL((BuildOptsMonoid -> Identity BuildOptsMonoid)
-> GlobalOpts -> Identity GlobalOpts)
-> ((Maybe Bool -> Identity (Maybe Bool))
-> BuildOptsMonoid -> Identity BuildOptsMonoid)
-> (Maybe Bool -> Identity (Maybe Bool))
-> GlobalOpts
-> Identity GlobalOpts
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe Bool -> Identity (Maybe Bool))
-> BuildOptsMonoid -> Identity BuildOptsMonoid
Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidHaddockL) (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
x)) (RIO Runner a -> RIO Runner a)
-> (RIO EnvConfig a -> RIO Runner a)
-> RIO EnvConfig a
-> RIO Runner a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
ShouldReexec -> RIO Config a -> RIO Runner a
forall a. ShouldReexec -> RIO Config a -> RIO Runner a
withConfig ShouldReexec
YesReexec (RIO Config a -> RIO Runner a)
-> (RIO EnvConfig a -> RIO Config a)
-> RIO EnvConfig a
-> RIO Runner a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
RIO EnvConfig a -> RIO Config a
forall a. RIO EnvConfig a -> RIO Config a
withDefaultEnvConfig
Bool -> RIO EnvConfig () -> RIO Runner ()
forall a. Bool -> RIO EnvConfig a -> RIO Runner a
runHaddock Bool
True (RIO EnvConfig () -> RIO Runner ())
-> RIO EnvConfig () -> RIO Runner ()
forall a b. (a -> b) -> a -> b
$ [(Text, PathInfo -> Text)] -> Bool -> RIO EnvConfig ()
forall env (t :: * -> *).
(HasEnvConfig env, Foldable t) =>
t (Text, PathInfo -> Text) -> Bool -> RIO env ()
printKeys [(Text, PathInfo -> Text)]
with Bool
singlePath
Bool -> RIO EnvConfig () -> RIO Runner ()
forall a. Bool -> RIO EnvConfig a -> RIO Runner a
runHaddock Bool
False (RIO EnvConfig () -> RIO Runner ())
-> RIO EnvConfig () -> RIO Runner ()
forall a b. (a -> b) -> a -> b
$ [(Text, PathInfo -> Text)] -> Bool -> RIO EnvConfig ()
forall env (t :: * -> *).
(HasEnvConfig env, Foldable t) =>
t (Text, PathInfo -> Text) -> Bool -> RIO env ()
printKeys [(Text, PathInfo -> Text)]
without Bool
singlePath
fillPathInfo :: HasEnvConfig env => RIO env PathInfo
fillPathInfo :: RIO env PathInfo
fillPathInfo = do
BuildConfig
piBuildConfig <- Getting BuildConfig env BuildConfig -> RIO env BuildConfig
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view (Getting BuildConfig env BuildConfig -> RIO env BuildConfig)
-> Getting BuildConfig env BuildConfig -> RIO env BuildConfig
forall a b. (a -> b) -> a -> b
$ (EnvConfig -> Const BuildConfig EnvConfig)
-> env -> Const BuildConfig env
forall env. HasEnvConfig env => Lens' env EnvConfig
envConfigL((EnvConfig -> Const BuildConfig EnvConfig)
-> env -> Const BuildConfig env)
-> ((BuildConfig -> Const BuildConfig BuildConfig)
-> EnvConfig -> Const BuildConfig EnvConfig)
-> Getting BuildConfig env BuildConfig
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(BuildConfig -> Const BuildConfig BuildConfig)
-> EnvConfig -> Const BuildConfig EnvConfig
forall env. HasBuildConfig env => Lens' env BuildConfig
buildConfigL
Path Abs Dir
piSnapDb <- RIO env (Path Abs Dir)
forall env. HasEnvConfig env => RIO env (Path Abs Dir)
packageDatabaseDeps
Path Abs Dir
piLocalDb <- RIO env (Path Abs Dir)
forall env. HasEnvConfig env => RIO env (Path Abs Dir)
packageDatabaseLocal
[Path Abs Dir]
piExtraDbs <- RIO env [Path Abs Dir]
forall env (m :: * -> *).
(MonadReader env m, HasEnvConfig env) =>
m [Path Abs Dir]
packageDatabaseExtra
Path Abs Dir
piGlobalDb <- Getting (Path Abs Dir) env (Path Abs Dir) -> RIO env (Path Abs Dir)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view (Getting (Path Abs Dir) env (Path Abs Dir)
-> RIO env (Path Abs Dir))
-> Getting (Path Abs Dir) env (Path Abs Dir)
-> RIO env (Path Abs Dir)
forall a b. (a -> b) -> a -> b
$ Getting (Path Abs Dir) env CompilerPaths
forall env. HasCompiler env => SimpleGetter env CompilerPaths
compilerPathsLGetting (Path Abs Dir) env CompilerPaths
-> ((Path Abs Dir -> Const (Path Abs Dir) (Path Abs Dir))
-> CompilerPaths -> Const (Path Abs Dir) CompilerPaths)
-> Getting (Path Abs Dir) env (Path Abs Dir)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(CompilerPaths -> Path Abs Dir)
-> SimpleGetter CompilerPaths (Path Abs Dir)
forall s a. (s -> a) -> SimpleGetter s a
to CompilerPaths -> Path Abs Dir
cpGlobalDB
Path Abs Dir
piSnapRoot <- RIO env (Path Abs Dir)
forall env. HasEnvConfig env => RIO env (Path Abs Dir)
installationRootDeps
Path Abs Dir
piLocalRoot <- RIO env (Path Abs Dir)
forall env. HasEnvConfig env => RIO env (Path Abs Dir)
installationRootLocal
Path Abs Dir
piToolsDir <- RIO env (Path Abs Dir)
forall (m :: * -> *) env.
(MonadThrow m, MonadReader env m, HasEnvConfig env) =>
m (Path Abs Dir)
bindirCompilerTools
Path Abs Dir
piHoogleRoot <- RIO env (Path Abs Dir)
forall env. HasEnvConfig env => RIO env (Path Abs Dir)
hoogleRoot
Path Rel Dir
piDistDir <- RIO env (Path Rel Dir)
forall (m :: * -> *) env.
(MonadThrow m, MonadReader env m, HasEnvConfig env) =>
m (Path Rel Dir)
distRelativeDir
Path Abs Dir
piHpcDir <- RIO env (Path Abs Dir)
forall env. HasEnvConfig env => RIO env (Path Abs Dir)
hpcReportDir
Path Abs File
piCompiler <- RIO env (Path Abs File)
forall env. HasCompiler env => RIO env (Path Abs File)
getCompilerPath
PathInfo -> RIO env PathInfo
forall (m :: * -> *) a. Monad m => a -> m a
return PathInfo :: BuildConfig
-> Path Abs Dir
-> Path Abs Dir
-> Path Abs Dir
-> Path Abs Dir
-> Path Abs Dir
-> Path Abs Dir
-> Path Abs Dir
-> Path Rel Dir
-> Path Abs Dir
-> [Path Abs Dir]
-> Path Abs File
-> PathInfo
PathInfo {[Path Abs Dir]
Path Abs File
Path Abs Dir
Path Rel Dir
BuildConfig
piCompiler :: Path Abs File
piExtraDbs :: [Path Abs Dir]
piHpcDir :: Path Abs Dir
piDistDir :: Path Rel Dir
piHoogleRoot :: Path Abs Dir
piToolsDir :: Path Abs Dir
piLocalRoot :: Path Abs Dir
piSnapRoot :: Path Abs Dir
piGlobalDb :: Path Abs Dir
piLocalDb :: Path Abs Dir
piSnapDb :: Path Abs Dir
piBuildConfig :: BuildConfig
piCompiler :: Path Abs File
piHpcDir :: Path Abs Dir
piDistDir :: Path Rel Dir
piHoogleRoot :: Path Abs Dir
piToolsDir :: Path Abs Dir
piLocalRoot :: Path Abs Dir
piSnapRoot :: Path Abs Dir
piGlobalDb :: Path Abs Dir
piExtraDbs :: [Path Abs Dir]
piLocalDb :: Path Abs Dir
piSnapDb :: Path Abs Dir
piBuildConfig :: BuildConfig
..}
pathParser :: OA.Parser [Text]
pathParser :: Parser [Text]
pathParser =
((String, Text, UseHaddocks (PathInfo -> Text))
-> Parser (Maybe Text))
-> [(String, Text, UseHaddocks (PathInfo -> Text))]
-> Parser [Text]
forall (f :: * -> *) a b.
Applicative f =>
(a -> f (Maybe b)) -> [a] -> f [b]
mapMaybeA
(\(String
desc,Text
name,UseHaddocks (PathInfo -> Text)
_) ->
Maybe Text
-> Maybe Text -> Mod FlagFields (Maybe Text) -> Parser (Maybe Text)
forall a. a -> a -> Mod FlagFields a -> Parser a
OA.flag Maybe Text
forall a. Maybe a
Nothing
(Text -> Maybe Text
forall a. a -> Maybe a
Just Text
name)
(String -> Mod FlagFields (Maybe Text)
forall (f :: * -> *) a. HasName f => String -> Mod f a
OA.long (Text -> String
T.unpack Text
name) Mod FlagFields (Maybe Text)
-> Mod FlagFields (Maybe Text) -> Mod FlagFields (Maybe Text)
forall a. Semigroup a => a -> a -> a
<>
String -> Mod FlagFields (Maybe Text)
forall (f :: * -> *) a. String -> Mod f a
OA.help String
desc))
[(String, Text, UseHaddocks (PathInfo -> Text))]
paths
data PathInfo = PathInfo
{ PathInfo -> BuildConfig
piBuildConfig :: !BuildConfig
, PathInfo -> Path Abs Dir
piSnapDb :: !(Path Abs Dir)
, PathInfo -> Path Abs Dir
piLocalDb :: !(Path Abs Dir)
, PathInfo -> Path Abs Dir
piGlobalDb :: !(Path Abs Dir)
, PathInfo -> Path Abs Dir
piSnapRoot :: !(Path Abs Dir)
, PathInfo -> Path Abs Dir
piLocalRoot :: !(Path Abs Dir)
, PathInfo -> Path Abs Dir
piToolsDir :: !(Path Abs Dir)
, PathInfo -> Path Abs Dir
piHoogleRoot :: !(Path Abs Dir)
, PathInfo -> Path Rel Dir
piDistDir :: Path Rel Dir
, PathInfo -> Path Abs Dir
piHpcDir :: !(Path Abs Dir)
, :: ![Path Abs Dir]
, PathInfo -> Path Abs File
piCompiler :: !(Path Abs File)
}
instance HasPlatform PathInfo
instance HasLogFunc PathInfo where
logFuncL :: (LogFunc -> f LogFunc) -> PathInfo -> f PathInfo
logFuncL = (Config -> f Config) -> PathInfo -> f PathInfo
forall env. HasConfig env => Lens' env Config
configL((Config -> f Config) -> PathInfo -> f PathInfo)
-> ((LogFunc -> f LogFunc) -> Config -> f Config)
-> (LogFunc -> f LogFunc)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(LogFunc -> f LogFunc) -> Config -> f Config
forall env. HasLogFunc env => Lens' env LogFunc
logFuncL
instance HasRunner PathInfo where
runnerL :: (Runner -> f Runner) -> PathInfo -> f PathInfo
runnerL = (Config -> f Config) -> PathInfo -> f PathInfo
forall env. HasConfig env => Lens' env Config
configL((Config -> f Config) -> PathInfo -> f PathInfo)
-> ((Runner -> f Runner) -> Config -> f Config)
-> (Runner -> f Runner)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Runner -> f Runner) -> Config -> f Config
forall env. HasRunner env => Lens' env Runner
runnerL
instance HasStylesUpdate PathInfo where
stylesUpdateL :: (StylesUpdate -> f StylesUpdate) -> PathInfo -> f PathInfo
stylesUpdateL = (Runner -> f Runner) -> PathInfo -> f PathInfo
forall env. HasRunner env => Lens' env Runner
runnerL((Runner -> f Runner) -> PathInfo -> f PathInfo)
-> ((StylesUpdate -> f StylesUpdate) -> Runner -> f Runner)
-> (StylesUpdate -> f StylesUpdate)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(StylesUpdate -> f StylesUpdate) -> Runner -> f Runner
forall env. HasStylesUpdate env => Lens' env StylesUpdate
stylesUpdateL
instance HasTerm PathInfo where
useColorL :: (Bool -> f Bool) -> PathInfo -> f PathInfo
useColorL = (Runner -> f Runner) -> PathInfo -> f PathInfo
forall env. HasRunner env => Lens' env Runner
runnerL((Runner -> f Runner) -> PathInfo -> f PathInfo)
-> ((Bool -> f Bool) -> Runner -> f Runner)
-> (Bool -> f Bool)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Bool -> f Bool) -> Runner -> f Runner
forall env. HasTerm env => Lens' env Bool
useColorL
termWidthL :: (Int -> f Int) -> PathInfo -> f PathInfo
termWidthL = (Runner -> f Runner) -> PathInfo -> f PathInfo
forall env. HasRunner env => Lens' env Runner
runnerL((Runner -> f Runner) -> PathInfo -> f PathInfo)
-> ((Int -> f Int) -> Runner -> f Runner)
-> (Int -> f Int)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Int -> f Int) -> Runner -> f Runner
forall env. HasTerm env => Lens' env Int
termWidthL
instance HasGHCVariant PathInfo
instance HasConfig PathInfo
instance HasPantryConfig PathInfo where
pantryConfigL :: (PantryConfig -> f PantryConfig) -> PathInfo -> f PathInfo
pantryConfigL = (Config -> f Config) -> PathInfo -> f PathInfo
forall env. HasConfig env => Lens' env Config
configL((Config -> f Config) -> PathInfo -> f PathInfo)
-> ((PantryConfig -> f PantryConfig) -> Config -> f Config)
-> (PantryConfig -> f PantryConfig)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(PantryConfig -> f PantryConfig) -> Config -> f Config
forall env. HasPantryConfig env => Lens' env PantryConfig
pantryConfigL
instance HasProcessContext PathInfo where
processContextL :: (ProcessContext -> f ProcessContext) -> PathInfo -> f PathInfo
processContextL = (Config -> f Config) -> PathInfo -> f PathInfo
forall env. HasConfig env => Lens' env Config
configL((Config -> f Config) -> PathInfo -> f PathInfo)
-> ((ProcessContext -> f ProcessContext) -> Config -> f Config)
-> (ProcessContext -> f ProcessContext)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(ProcessContext -> f ProcessContext) -> Config -> f Config
forall env. HasProcessContext env => Lens' env ProcessContext
processContextL
instance HasBuildConfig PathInfo where
buildConfigL :: (BuildConfig -> f BuildConfig) -> PathInfo -> f PathInfo
buildConfigL = (PathInfo -> BuildConfig)
-> (PathInfo -> BuildConfig -> PathInfo)
-> Lens' PathInfo BuildConfig
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens PathInfo -> BuildConfig
piBuildConfig (\PathInfo
x BuildConfig
y -> PathInfo
x { piBuildConfig :: BuildConfig
piBuildConfig = BuildConfig
y })
((BuildConfig -> f BuildConfig) -> PathInfo -> f PathInfo)
-> ((BuildConfig -> f BuildConfig) -> BuildConfig -> f BuildConfig)
-> (BuildConfig -> f BuildConfig)
-> PathInfo
-> f PathInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (BuildConfig -> f BuildConfig) -> BuildConfig -> f BuildConfig
forall env. HasBuildConfig env => Lens' env BuildConfig
buildConfigL
data UseHaddocks a = UseHaddocks a | WithoutHaddocks a
paths :: [(String, Text, UseHaddocks (PathInfo -> Text))]
paths :: [(String, Text, UseHaddocks (PathInfo -> Text))]
paths =
[ ( String
"Global stack root directory"
, String -> Text
T.pack String
stackRootOptionName
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Getting Text PathInfo Text -> PathInfo -> Text
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view ((Path Abs Dir -> Const Text (Path Abs Dir))
-> PathInfo -> Const Text PathInfo
forall s. HasConfig s => Lens' s (Path Abs Dir)
stackRootL((Path Abs Dir -> Const Text (Path Abs Dir))
-> PathInfo -> Const Text PathInfo)
-> ((Text -> Const Text Text)
-> Path Abs Dir -> Const Text (Path Abs Dir))
-> Getting Text PathInfo Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Path Abs Dir -> String) -> SimpleGetter (Path Abs Dir) String
forall s a. (s -> a) -> SimpleGetter s a
to Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSepGetting Text (Path Abs Dir) String
-> ((Text -> Const Text Text) -> String -> Const Text String)
-> (Text -> Const Text Text)
-> Path Abs Dir
-> Const Text (Path Abs Dir)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> Text) -> SimpleGetter String Text
forall s a. (s -> a) -> SimpleGetter s a
to String -> Text
T.pack))
, ( String
"Project root (derived from stack.yaml file)"
, Text
"project-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Getting Text PathInfo Text -> PathInfo -> Text
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view ((Path Abs Dir -> Const Text (Path Abs Dir))
-> PathInfo -> Const Text PathInfo
forall env r. HasBuildConfig env => Getting r env (Path Abs Dir)
projectRootL((Path Abs Dir -> Const Text (Path Abs Dir))
-> PathInfo -> Const Text PathInfo)
-> ((Text -> Const Text Text)
-> Path Abs Dir -> Const Text (Path Abs Dir))
-> Getting Text PathInfo Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Path Abs Dir -> String) -> SimpleGetter (Path Abs Dir) String
forall s a. (s -> a) -> SimpleGetter s a
to Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSepGetting Text (Path Abs Dir) String
-> ((Text -> Const Text Text) -> String -> Const Text String)
-> (Text -> Const Text Text)
-> Path Abs Dir
-> Const Text (Path Abs Dir)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> Text) -> SimpleGetter String Text
forall s a. (s -> a) -> SimpleGetter s a
to String -> Text
T.pack))
, ( String
"Configuration location (where the stack.yaml file is)"
, Text
"config-location"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Getting Text PathInfo Text -> PathInfo -> Text
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view ((Path Abs File -> Const Text (Path Abs File))
-> PathInfo -> Const Text PathInfo
forall env. HasBuildConfig env => Lens' env (Path Abs File)
stackYamlL((Path Abs File -> Const Text (Path Abs File))
-> PathInfo -> Const Text PathInfo)
-> ((Text -> Const Text Text)
-> Path Abs File -> Const Text (Path Abs File))
-> Getting Text PathInfo Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Path Abs File -> String) -> SimpleGetter (Path Abs File) String
forall s a. (s -> a) -> SimpleGetter s a
to Path Abs File -> String
forall b t. Path b t -> String
toFilePathGetting Text (Path Abs File) String
-> ((Text -> Const Text Text) -> String -> Const Text String)
-> (Text -> Const Text Text)
-> Path Abs File
-> Const Text (Path Abs File)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> Text) -> SimpleGetter String Text
forall s a. (s -> a) -> SimpleGetter s a
to String -> Text
T.pack))
, ( String
"PATH environment variable"
, Text
"bin-path"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate [Char
FP.searchPathSeparator] ([String] -> String)
-> (PathInfo -> [String]) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting [String] PathInfo [String] -> PathInfo -> [String]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting [String] PathInfo [String]
forall env. HasProcessContext env => SimpleGetter env [String]
exeSearchPathL)
, ( String
"Install location for GHC and other core tools"
, Text
"programs"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Getting Text PathInfo Text -> PathInfo -> Text
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view ((Config -> Const Text Config) -> PathInfo -> Const Text PathInfo
forall env. HasConfig env => Lens' env Config
configL((Config -> Const Text Config) -> PathInfo -> Const Text PathInfo)
-> ((Text -> Const Text Text) -> Config -> Const Text Config)
-> Getting Text PathInfo Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Config -> Path Abs Dir) -> SimpleGetter Config (Path Abs Dir)
forall s a. (s -> a) -> SimpleGetter s a
to Config -> Path Abs Dir
configLocalProgramsGetting Text Config (Path Abs Dir)
-> ((Text -> Const Text Text)
-> Path Abs Dir -> Const Text (Path Abs Dir))
-> (Text -> Const Text Text)
-> Config
-> Const Text Config
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Path Abs Dir -> String) -> SimpleGetter (Path Abs Dir) String
forall s a. (s -> a) -> SimpleGetter s a
to Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSepGetting Text (Path Abs Dir) String
-> ((Text -> Const Text Text) -> String -> Const Text String)
-> (Text -> Const Text Text)
-> Path Abs Dir
-> Const Text (Path Abs Dir)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> Text) -> SimpleGetter String Text
forall s a. (s -> a) -> SimpleGetter s a
to String -> Text
T.pack))
, ( String
"Compiler binary (e.g. ghc)"
, Text
"compiler-exe"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs File -> String
forall b t. Path b t -> String
toFilePath (Path Abs File -> String)
-> (PathInfo -> Path Abs File) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs File
piCompiler )
, ( String
"Directory containing the compiler binary (e.g. ghc)"
, Text
"compiler-bin"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs File -> Path Abs Dir
forall b t. Path b t -> Path b Dir
parent (Path Abs File -> Path Abs Dir)
-> (PathInfo -> Path Abs File) -> PathInfo -> Path Abs Dir
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs File
piCompiler )
, ( String
"Directory containing binaries specific to a particular compiler (e.g. intero)"
, Text
"compiler-tools-bin"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piToolsDir )
, ( String
"Local bin dir where stack installs executables (e.g. ~/.local/bin)"
, Text
"local-bin"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Getting Text PathInfo Text -> PathInfo -> Text
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view (Getting Text PathInfo Text -> PathInfo -> Text)
-> Getting Text PathInfo Text -> PathInfo -> Text
forall a b. (a -> b) -> a -> b
$ (Config -> Const Text Config) -> PathInfo -> Const Text PathInfo
forall env. HasConfig env => Lens' env Config
configL((Config -> Const Text Config) -> PathInfo -> Const Text PathInfo)
-> ((Text -> Const Text Text) -> Config -> Const Text Config)
-> Getting Text PathInfo Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Config -> Path Abs Dir) -> SimpleGetter Config (Path Abs Dir)
forall s a. (s -> a) -> SimpleGetter s a
to Config -> Path Abs Dir
configLocalBinGetting Text Config (Path Abs Dir)
-> ((Text -> Const Text Text)
-> Path Abs Dir -> Const Text (Path Abs Dir))
-> (Text -> Const Text Text)
-> Config
-> Const Text Config
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Path Abs Dir -> String) -> SimpleGetter (Path Abs Dir) String
forall s a. (s -> a) -> SimpleGetter s a
to Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSepGetting Text (Path Abs Dir) String
-> ((Text -> Const Text Text) -> String -> Const Text String)
-> (Text -> Const Text Text)
-> Path Abs Dir
-> Const Text (Path Abs Dir)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> Text) -> SimpleGetter String Text
forall s a. (s -> a) -> SimpleGetter s a
to String -> Text
T.pack)
, ( String
"Extra include directories"
, Text
"extra-include-dirs"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Text -> [Text] -> Text
T.intercalate Text
", " ([Text] -> Text) -> (PathInfo -> [Text]) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text) -> [String] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map String -> Text
T.pack ([String] -> [Text])
-> (PathInfo -> [String]) -> PathInfo -> [Text]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Config -> [String]
configExtraIncludeDirs (Config -> [String])
-> (PathInfo -> Config) -> PathInfo -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting Config PathInfo Config -> PathInfo -> Config
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Config PathInfo Config
forall env. HasConfig env => Lens' env Config
configL )
, ( String
"Extra library directories"
, Text
"extra-library-dirs"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ Text -> [Text] -> Text
T.intercalate Text
", " ([Text] -> Text) -> (PathInfo -> [Text]) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text) -> [String] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map String -> Text
T.pack ([String] -> [Text])
-> (PathInfo -> [String]) -> PathInfo -> [Text]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Config -> [String]
configExtraLibDirs (Config -> [String])
-> (PathInfo -> Config) -> PathInfo -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting Config PathInfo Config -> PathInfo -> Config
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Config PathInfo Config
forall env. HasConfig env => Lens' env Config
configL )
, ( String
"Snapshot package database"
, Text
"snapshot-pkg-db"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piSnapDb )
, ( String
"Local project package database"
, Text
"local-pkg-db"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piLocalDb )
, ( String
"Global package database"
, Text
"global-pkg-db"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piGlobalDb )
, ( String
"GHC_PACKAGE_PATH environment variable"
, Text
"ghc-package-path"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ \PathInfo
pi' -> Bool
-> Path Abs Dir
-> Path Abs Dir
-> [Path Abs Dir]
-> Path Abs Dir
-> Text
mkGhcPackagePath Bool
True (PathInfo -> Path Abs Dir
piLocalDb PathInfo
pi') (PathInfo -> Path Abs Dir
piSnapDb PathInfo
pi') (PathInfo -> [Path Abs Dir]
piExtraDbs PathInfo
pi') (PathInfo -> Path Abs Dir
piGlobalDb PathInfo
pi'))
, ( String
"Snapshot installation root"
, Text
"snapshot-install-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piSnapRoot )
, ( String
"Local project installation root"
, Text
"local-install-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piLocalRoot )
, ( String
"Snapshot documentation root"
, Text
"snapshot-doc-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
UseHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ \PathInfo
pi' -> String -> Text
T.pack (Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (PathInfo -> Path Abs Dir
piSnapRoot PathInfo
pi' Path Abs Dir -> Path Rel Dir -> Path Abs Dir
forall b t. Path b Dir -> Path Rel t -> Path b t
</> Path Rel Dir
docDirSuffix)))
, ( String
"Local project documentation root"
, Text
"local-doc-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
UseHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ \PathInfo
pi' -> String -> Text
T.pack (Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (PathInfo -> Path Abs Dir
piLocalRoot PathInfo
pi' Path Abs Dir -> Path Rel Dir -> Path Abs Dir
forall b t. Path b Dir -> Path Rel t -> Path b t
</> Path Rel Dir
docDirSuffix)))
, ( String
"Local project documentation root"
, Text
"local-hoogle-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
UseHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piHoogleRoot)
, ( String
"Dist work directory, relative to package directory"
, Text
"dist-dir"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Rel Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Rel Dir -> String)
-> (PathInfo -> Path Rel Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Rel Dir
piDistDir )
, ( String
"Where HPC reports and tix files are stored"
, Text
"local-hpc-root"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PathInfo -> Path Abs Dir
piHpcDir )
, ( String
"DEPRECATED: Use '--local-bin' instead"
, Text
"local-bin-path"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Config -> Path Abs Dir
configLocalBin (Config -> Path Abs Dir)
-> (PathInfo -> Config) -> PathInfo -> Path Abs Dir
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting Config PathInfo Config -> PathInfo -> Config
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Config PathInfo Config
forall env. HasConfig env => Lens' env Config
configL )
, ( String
"DEPRECATED: Use '--programs' instead"
, Text
"ghc-paths"
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Config -> Path Abs Dir
configLocalPrograms (Config -> Path Abs Dir)
-> (PathInfo -> Config) -> PathInfo -> Path Abs Dir
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting Config PathInfo Config -> PathInfo -> Config
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Config PathInfo Config
forall env. HasConfig env => Lens' env Config
configL )
, ( String
"DEPRECATED: Use '--" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
stackRootOptionName String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"' instead"
, String -> Text
T.pack String
deprecatedStackRootOptionName
, (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a. a -> UseHaddocks a
WithoutHaddocks ((PathInfo -> Text) -> UseHaddocks (PathInfo -> Text))
-> (PathInfo -> Text) -> UseHaddocks (PathInfo -> Text)
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (PathInfo -> String) -> PathInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path Abs Dir -> String
forall loc. Path loc Dir -> String
toFilePathNoTrailingSep (Path Abs Dir -> String)
-> (PathInfo -> Path Abs Dir) -> PathInfo -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting (Path Abs Dir) PathInfo (Path Abs Dir)
-> PathInfo -> Path Abs Dir
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Path Abs Dir) PathInfo (Path Abs Dir)
forall s. HasConfig s => Lens' s (Path Abs Dir)
stackRootL )
]
deprecatedPathKeys :: [(Text, Text)]
deprecatedPathKeys :: [(Text, Text)]
deprecatedPathKeys =
[ (String -> Text
T.pack String
deprecatedStackRootOptionName, String -> Text
T.pack String
stackRootOptionName)
, (Text
"ghc-paths", Text
"programs")
, (Text
"local-bin-path", Text
"local-bin")
]