@@ -183,13 +183,18 @@ cabalFromDirectory :: Bool -- ^ Whether hpack should regenerate the cabal file
183183 -> FilePath -> MaybeT IO (Bool, Cabal.GenericPackageDescription)
184184cabalFromDirectory True dir = hpackDirectory dir
185185cabalFromDirectory False dir = do
186− cabals <- liftIO $ getDirectoryContents dir >>= filterM doesFileExist . map (dir </>) . filter (".cabal" `isSuffixOf`)
187− case cabals of
188− [] -> do
189− liftIO $ hPutStrLn stderr "*** found zero cabal files. Trying hpack..."
186+ useHpack <- liftIO $ doesFileExist (dir </> "package.yaml")
187+ if useHpack
188+ then do
189+ liftIO $ hPutStrLn stderr "*** found package.yaml. Using hpack..."
190190 hpackDirectory dir
191− [cabalFile] -> (,) False <$> cabalFromFile True cabalFile
192− _ -> liftIO $ fail ("*** found more than one cabal file (" ++ show cabals ++ "). Exiting.")
191+ else do
192+ cabals <- liftIO $ getDirectoryContents dir >>= filterM doesFileExist . map (dir </>) . filter (".cabal" `isSuffixOf`)
193+ case cabals of
194+ [] -> do
195+ fail "*** Found neither a .cabal file nor package.yaml. Exiting."
196+ [cabalFile] -> (,) False <$> cabalFromFile True cabalFile
197+ _ -> liftIO $ fail ("*** found more than one cabal file (" ++ show cabals ++ "). Exiting.")
193198
194199handleIO :: (Exception.IOException -> IO a) -> IO a -> IO a
195200handleIO = Exception.handle