diff --git a/Main.hs b/Main.hs index e2f6280..82bf645 100644 --- a/Main.hs +++ b/Main.hs @@ -64,6 +64,7 @@ liArgs s = } &= program s &= summary (unwords ["licensor", Version.showVersion version]) + &= verbosity -- | @@ -74,6 +75,8 @@ main :: IO () main = do LiArgs <- cmdArgsRun . liArgs =<< getProgName + quiet <- fmap not isNormal + maybePackage <- getPackage pid <- @@ -105,7 +108,7 @@ main = do Just dependencies -> do (dependenciesByLicense', failed) <- - orderPackagesByLicense pid dependencies + orderPackagesByLicense quiet pid dependencies let dependenciesByLicense = fmap (Set.map display) dependenciesByLicense' diff --git a/src/Licensor.hs b/src/Licensor.hs index 4fe492a..00ac626 100644 --- a/src/Licensor.hs +++ b/src/Licensor.hs @@ -24,6 +24,7 @@ module Licensor -- base import qualified Control.Exception as Exception +import Control.Monad (unless) import Data.Monoid ((<>)) import Data.Version (Version) import System.IO @@ -130,9 +131,9 @@ getDependencies = do -- -- -getPackageLicense :: PackageIdentifier -> IO (Maybe LiLicense) -getPackageLicense p@PackageIdentifier{..} = do - putStr $ display p ++ "..." +getPackageLicense :: Bool -> PackageIdentifier -> IO (Maybe LiLicense) +getPackageLicense quiet p@PackageIdentifier{..} = do + unless quiet (putStr $ display p ++ "...") let url = "GET https://hackage.haskell.org/package/" @@ -157,7 +158,7 @@ getPackageLicense p@PackageIdentifier{..} = do hClose handle removeFile file - putStrLn $ display license + unless quiet (putStrLn $ display license) return $ Just (LiLicense license) @@ -167,16 +168,17 @@ getPackageLicense p@PackageIdentifier{..} = do -- orderPackagesByLicense - :: Maybe PackageIdentifier + :: Bool + -> Maybe PackageIdentifier -> Set PackageIdentifier -> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier) -orderPackagesByLicense maybeP = +orderPackagesByLicense quiet maybeP = let cond = maybe (const False) (==) maybeP insertPackage package orderedPackages' = do - maybeLicense <- getPackageLicense package + maybeLicense <- getPackageLicense quiet package (orderedPackages, failed) <- orderedPackages' return $