@@ -49,13 +49,18 @@ inferCradleTree start_dir =
49
49
-- (dist-newstyle/.stack-work), prefer that
50
50
<|> (cabalExecutable >> cabalConfigDir start_dir >>= \ dir -> cabalWorkDir dir >> pure (cabalCradle dir))
51
51
<|> (stackExecutable >> stackConfigDir start_dir >>= \ dir -> stackWorkDir dir >> stackCradle dir)
52
- -- Redo the checks, but don't check for the work-dir, maybe the user hasn't run a build yet
53
- <|> (cabalExecutable >> cabalConfigDir start_dir >>= pure . cabalCradle)
52
+ -- If we have a cabal.project OR we have a .cabal and dist-newstyle, prefer cabal
53
+ <|> (cabalExecutable >> (cabalConfigDir start_dir <|> cabalFileAndWorkDir) >>= pure . cabalCradle)
54
+ -- If we have a stack.yaml, use stack
54
55
<|> (stackExecutable >> stackConfigDir start_dir >>= stackCradle)
56
+ -- If we have a cabal file, use cabal
57
+ <|> (cabalExecutable >> cabalFileDir start_dir >>= pure . cabalCradle)
55
58
56
59
where
57
60
maybeItsBios = (\ wdir -> (Bios (Program $ wdir </> " .hie-bios" ) Nothing Nothing , wdir)) <$> biosWorkDir start_dir
58
61
62
+ cabalFileAndWorkDir = cabalFileDir start_dir >>= (\ dir -> cabalWorkDir dir >> pure dir)
63
+
59
64
stackCradle :: FilePath -> MaybeT IO (CradleTree a , FilePath )
60
65
stackCradle fp = do
61
66
pkgs <- stackYamlPkgs fp
@@ -90,8 +95,10 @@ stackWorkDir wdir = do
90
95
unless check $ fail " No .stack-work"
91
96
92
97
cabalConfigDir :: FilePath -> MaybeT IO FilePath
93
- cabalConfigDir wdir = findFileUpwards (== " cabal.project" ) wdir
94
- <|> findFileUpwards (\ fp -> takeExtension fp == " .cabal" ) wdir
98
+ cabalConfigDir = findFileUpwards (\ fp -> fp == " cabal.project" || fp == " cabal.project.local" )
99
+
100
+ cabalFileDir :: FilePath -> MaybeT IO FilePath
101
+ cabalFileDir = findFileUpwards (\ fp -> takeExtension fp == " .cabal" )
95
102
96
103
stackConfigDir :: FilePath -> MaybeT IO FilePath
97
104
stackConfigDir = findFileUpwards isStack
0 commit comments