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.Set as Set
-- directory
import System.Directory (doesFileExist)
-- |
--
@ -75,8 +78,14 @@ main = do
pid <-
case maybePackage of
Nothing ->
Exit.die "Error: No Cabal file found."
Nothing -> do
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
putStrLn $
@ -86,7 +95,7 @@ main = do
<> "License: "
<> display license
<> ")"
return package
return (Just package)
maybeDependencies <- getDependencies

View File

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

View File

@ -114,9 +114,16 @@ getPackageDescription =
--
getDependencies :: IO (Maybe (Set PackageIdentifier))
getDependencies =
fmap Set.fromList . sequence . fmap simpleParse . lines
<$> readProcess "stack" ["list-dependencies", "--separator", "-"] ""
getDependencies = do
eitherDeps <-
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
:: PackageIdentifier
:: Maybe PackageIdentifier
-> Set PackageIdentifier
-> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier)
orderPackagesByLicense p =
orderPackagesByLicense maybeP =
let
cond =
maybe (const False) (==) maybeP
insertPackage package orderedPackages' = do
maybeLicense <- getPackageLicense package
(orderedPackages, failed) <- orderedPackages'
return $
if p == package
if cond package
then
(orderedPackages, failed)
else