@@ -146,9 +146,17 @@ configFromConfigMonoid configStackRoot mproject configMonoid@ConfigMonoid{..} =
146146 return $ progsDir </> $ (mkRelDir stackProgName) </> platform
147147 _ -> return $ configStackRoot </> $ (mkRelDir " programs" ) </> platform
148148
149- configLocalBin <- do
150- localDir <- liftIO (getAppUserDataDirectory " local" ) >>= parseAbsDir
151- return $ localDir </> $ (mkRelDir " bin" )
149+ configLocalBin <- case configMonoidLocalBin of
150+ Nothing -> do
151+ localDir <- liftIO (getAppUserDataDirectory " local" ) >>= parseAbsDir
152+ return $ localDir </> $ (mkRelDir " bin" )
153+ Just userPath -> do
154+ tryPath <- try (liftIO $ canonicalizePath userPath >>= parseAbsDir)
155+ case tryPath of
156+ Left (_ :: SomeException ) ->
157+ error $ " Could not locate user specified directory \" " ++
158+ userPath ++ " \" "
159+ Right absPath -> return absPath
152160
153161 configJobs <-
154162 case configMonoidJobs of
@@ -161,7 +169,7 @@ configFromConfigMonoid configStackRoot mproject configMonoid@ConfigMonoid{..} =
161169-- | Command-line arguments parser for configuration.
162170configOptsParser :: Bool -> Parser ConfigMonoid
163171configOptsParser docker =
164- (\ opts systemGHC installGHC arch os jobs includes libs skipGHCCheck skipMsys -> mempty
172+ (\ opts systemGHC installGHC arch os jobs includes libs skipGHCCheck skipMsys localBin -> mempty
165173 { configMonoidDockerOpts = opts
166174 , configMonoidSystemGHC = systemGHC
167175 , configMonoidInstallGHC = installGHC
@@ -172,6 +180,7 @@ configOptsParser docker =
172180 , configMonoidExtraIncludeDirs = includes
173181 , configMonoidExtraLibDirs = libs
174182 , configMonoidSkipMsys = skipMsys
183+ , configMonoidLocalBin = localBin
175184 })
176185 <$> Docker. dockerOptsParser docker
177186 <*> maybeBoolFlags
@@ -216,6 +225,12 @@ configOptsParser docker =
216225 " skip-msys"
217226 " skipping the local MSYS installation (Windows only)"
218227 idm
228+ <*> optional (strOption
229+ ( long " local-bin-path"
230+ <> short ' p'
231+ <> metavar " DIR"
232+ <> help " Install binaries to DIR"
233+ ))
219234
220235-- | Get the directory on Windows where we should install extra programs. For
221236-- more information, see discussion at:
0 commit comments