@@ -529,19 +529,22 @@ loadYaml path = do
529
529
logJSONWarnings (toFilePath path) warnings
530
530
return result
531
531
532
- -- | Get the parent directory the project config file, if it exists.
533
- getProjectConfigDir :: (MonadIO m , MonadThrow m , MonadLogger m )
534
- => m (Maybe (Path Abs Dir ))
535
- getProjectConfigDir = do
532
+ -- | Get the location of the project config file, if it exists.
533
+ getProjectConfig :: (MonadIO m , MonadThrow m , MonadLogger m )
534
+ => Maybe (Path Abs File )
535
+ -- ^ Override stack.yaml
536
+ -> m (Maybe (Path Abs File ))
537
+ getProjectConfig (Just stackYaml) = return $ Just stackYaml
538
+ getProjectConfig Nothing = do
536
539
env <- liftIO getEnvironment
537
540
case lookup " STACK_YAML" env of
538
541
Just fp -> do
539
542
$ logInfo " Getting project config file from STACK_YAML environment"
540
543
liftM Just $ case parseAbsFile fp of
541
544
Left _ -> do
542
545
currDir <- getWorkingDir
543
- fmap parent ( resolveFile currDir fp)
544
- Right path -> return (parent path)
546
+ resolveFile currDir fp
547
+ Right path -> return path
545
548
Nothing -> do
546
549
currDir <- getWorkingDir
547
550
search currDir
@@ -552,28 +555,14 @@ getProjectConfigDir = do
552
555
$ logDebug $ " Checking for project config at: " <> T. pack fp'
553
556
exists <- fileExists fp
554
557
if exists
555
- then return $ Just dir
558
+ then return $ Just fp
556
559
else do
557
560
let dir' = parent dir
558
561
if dir == dir'
559
562
-- fully traversed, give up
560
563
then return Nothing
561
564
else search dir'
562
565
563
- -- | Get the path of the project config file, if it exists.
564
- getProjectConfigFile :: (MonadIO m , MonadThrow m , MonadLogger m )
565
- => Maybe (Path Abs File )
566
- -- ^ Override stack.yaml
567
- -> m (Maybe (Path Abs File ))
568
- getProjectConfigFile (Just stackYaml) = return $ Just stackYaml
569
- getProjectConfigFile Nothing =
570
- getProjectConfigDir >>= \ case
571
- Nothing ->
572
- return Nothing
573
- Just dir ->
574
- return $
575
- Just (dir </> stackDotYaml)
576
-
577
566
-- | Find the project config file location, respecting environment variables
578
567
-- and otherwise traversing parents. If no config is found, we supply a default
579
568
-- based on current directory.
@@ -582,7 +571,7 @@ loadProjectConfig :: (MonadIO m, MonadThrow m, MonadLogger m)
582
571
-- ^ Override stack.yaml
583
572
-> m (Maybe (Project , Path Abs File , ConfigMonoid ))
584
573
loadProjectConfig mstackYaml = do
585
- mfp <- getProjectConfigFile mstackYaml
574
+ mfp <- getProjectConfig mstackYaml
586
575
case mfp of
587
576
Just fp -> do
588
577
currDir <- getWorkingDir
0 commit comments