Allow use if stack.yaml file is found

This commit is contained in:
Juan Pedro Villa Isaza 2016-09-10 18:20:40 -05:00
parent ec640bb8ff
commit f545a4c170
3 changed files with 29 additions and 9 deletions

15
Main.hs
View File

@ -37,6 +37,9 @@ import System.Console.CmdArgs
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map
import qualified Data.Set as Set import qualified Data.Set as Set
-- directory
import System.Directory (doesFileExist)
-- | -- |
-- --
@ -75,8 +78,14 @@ main = do
pid <- pid <-
case maybePackage of case maybePackage of
Nothing -> Nothing -> do
Exit.die "Error: No Cabal file found." stack <- doesFileExist "stack.yaml"
if stack
then do
putStrLn "Found stack.yaml..."
return Nothing
else
Exit.die "Error: No Cabal file found."
Just PackageDescription{..} -> do Just PackageDescription{..} -> do
putStrLn $ putStrLn $
@ -86,7 +95,7 @@ main = do
<> "License: " <> "License: "
<> display license <> display license
<> ")" <> ")"
return package return (Just package)
maybeDependencies <- getDependencies maybeDependencies <- getDependencies

View File

@ -55,6 +55,7 @@ executable licensor
, Cabal >= 1.22 && < 1.25 , Cabal >= 1.22 && < 1.25
, cmdargs >= 0.10 && < 0.11 , cmdargs >= 0.10 && < 0.11
, containers , containers
, directory
, licensor , licensor
default-language: default-language:
Haskell2010 Haskell2010

View File

@ -114,9 +114,16 @@ getPackageDescription =
-- --
getDependencies :: IO (Maybe (Set PackageIdentifier)) getDependencies :: IO (Maybe (Set PackageIdentifier))
getDependencies = getDependencies = do
fmap Set.fromList . sequence . fmap simpleParse . lines eitherDeps <-
<$> readProcess "stack" ["list-dependencies", "--separator", "-"] "" Exception.try $ readProcess "stack" ["list-dependencies", "--separator", "-"] ""
case eitherDeps of
Left (_ :: IOError) ->
return Nothing
Right deps ->
return $ fmap Set.fromList $ sequence $ fmap simpleParse (lines deps)
-- | -- |
@ -160,17 +167,20 @@ getPackageLicense p@PackageIdentifier{..} = do
-- --
orderPackagesByLicense orderPackagesByLicense
:: PackageIdentifier :: Maybe PackageIdentifier
-> Set PackageIdentifier -> Set PackageIdentifier
-> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier) -> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier)
orderPackagesByLicense p = orderPackagesByLicense maybeP =
let let
cond =
maybe (const False) (==) maybeP
insertPackage package orderedPackages' = do insertPackage package orderedPackages' = do
maybeLicense <- getPackageLicense package maybeLicense <- getPackageLicense package
(orderedPackages, failed) <- orderedPackages' (orderedPackages, failed) <- orderedPackages'
return $ return $
if p == package if cond package
then then
(orderedPackages, failed) (orderedPackages, failed)
else else