Allow use if stack.yaml file is found
This commit is contained in:
parent
ec640bb8ff
commit
f545a4c170
15
Main.hs
15
Main.hs
@ -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
|
||||
|
||||
|
||||
@ -55,6 +55,7 @@ executable licensor
|
||||
, Cabal >= 1.22 && < 1.25
|
||||
, cmdargs >= 0.10 && < 0.11
|
||||
, containers
|
||||
, directory
|
||||
, licensor
|
||||
default-language:
|
||||
Haskell2010
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user