@@ -15,17 +15,12 @@ import Hie.Yaml
15
15
import System.Directory
16
16
import System.Directory.Internal
17
17
import System.FilePath.Posix
18
+ import System.Environment
18
19
19
20
main :: IO ()
20
21
main = do
21
22
pwd <- getCurrentDirectory
22
- files <- listDirectory pwd
23
- let name =
24
- if | any ((" dist-newstyle" == ) . takeFileName) files -> " cabal"
25
- | any ((" .stack-work" == ) . takeFileName) files -> " stack"
26
- | any ((" cabal.project" == ) . takeFileName) files -> " cabal"
27
- | any ((" stack.yaml" == ) . takeFileName) files -> " stack"
28
- | otherwise -> " cabal"
23
+ name <- resolveName pwd
29
24
cfs <- runMaybeT $ case name of
30
25
" cabal" -> cabalPkgs pwd
31
26
_ -> stackYamlPkgs pwd
@@ -35,3 +30,19 @@ main = do
35
30
<> " \n You may need to run stack build."
36
31
pkgs <- catMaybes <$> mapM (nestedPkg pwd) (concat cfs)
37
32
putStr <$> hieYaml name $ fmtPkgs name pkgs
33
+
34
+ resolveName :: FilePath -> IO String
35
+ resolveName pwd = do
36
+ args <- getArgs
37
+ files <- listDirectory pwd
38
+ let fileNames = map takeFileName files
39
+ name =
40
+ if | " --cabal" `elem` args -> " cabal"
41
+ | " --stack" `elem` args -> " stack"
42
+ | " dist-newstyle" `elem` fileNames -> " cabal"
43
+ | " .stack-work" `elem` fileNames -> " stack"
44
+ | " cabal.project" `elem` fileNames -> " cabal"
45
+ | " stack.yaml" `elem` fileNames -> " stack"
46
+ | otherwise -> " cabal"
47
+ return name
48
+
0 commit comments