Use Stack (executable) to get licenses
This commit is contained in:
parent
4f4d41d986
commit
ec8412b4ca
3
Main.hs
3
Main.hs
@ -101,6 +101,7 @@ main = do
|
|||||||
return (Just package)
|
return (Just package)
|
||||||
|
|
||||||
maybeDependencies <- getDependencies
|
maybeDependencies <- getDependencies
|
||||||
|
maybeLicenses <- getLicenses
|
||||||
|
|
||||||
case maybeDependencies of
|
case maybeDependencies of
|
||||||
Nothing ->
|
Nothing ->
|
||||||
@ -108,7 +109,7 @@ main = do
|
|||||||
|
|
||||||
Just dependencies -> do
|
Just dependencies -> do
|
||||||
(dependenciesByLicense', failed) <-
|
(dependenciesByLicense', failed) <-
|
||||||
orderPackagesByLicense quiet pid dependencies
|
orderPackagesByLicense quiet pid maybeLicenses dependencies
|
||||||
|
|
||||||
let dependenciesByLicense = fmap (Set.map display) dependenciesByLicense'
|
let dependenciesByLicense = fmap (Set.map display) dependenciesByLicense'
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@ module Licensor
|
|||||||
( LiLicense(..)
|
( LiLicense(..)
|
||||||
, LiPackage(..)
|
, LiPackage(..)
|
||||||
, getDependencies
|
, getDependencies
|
||||||
|
, getLicenses
|
||||||
, getPackage
|
, getPackage
|
||||||
, orderPackagesByLicense
|
, orderPackagesByLicense
|
||||||
, version
|
, version
|
||||||
@ -126,12 +127,45 @@ getDependencies = do
|
|||||||
return $ fmap Set.fromList $ sequence $ fmap simpleParse (lines deps)
|
return $ fmap Set.fromList $ sequence $ fmap simpleParse (lines deps)
|
||||||
|
|
||||||
|
|
||||||
|
getLicenses :: IO (Maybe [(PackageName, License)])
|
||||||
|
getLicenses = do
|
||||||
|
eitherDeps <-
|
||||||
|
Exception.try $ readProcess "stack" ["ls", "dependencies", "--license"] ""
|
||||||
|
|
||||||
|
case eitherDeps of
|
||||||
|
Left (_ :: IOError) ->
|
||||||
|
return Nothing
|
||||||
|
|
||||||
|
Right deps ->
|
||||||
|
return $ sequence $ fmap toNameLicense (lines deps)
|
||||||
|
where
|
||||||
|
toNameLicense dep =
|
||||||
|
case words dep of
|
||||||
|
[name, license] ->
|
||||||
|
(,) <$> simpleParse name <*> simpleParse license
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
Nothing
|
||||||
|
|
||||||
|
|
||||||
-- |
|
-- |
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
|
|
||||||
getPackageLicense :: Bool -> PackageIdentifier -> IO (Maybe LiLicense)
|
getPackageLicense
|
||||||
getPackageLicense quiet p@PackageIdentifier{..} = do
|
:: Bool
|
||||||
|
-> PackageIdentifier
|
||||||
|
-> Maybe [(PackageName, License)]
|
||||||
|
-> IO (Maybe LiLicense)
|
||||||
|
getPackageLicense quiet p@PackageIdentifier{..} (Just licenses) = do
|
||||||
|
unless quiet (putStr $ display p ++ "...")
|
||||||
|
case lookup pkgName licenses of
|
||||||
|
Just license -> do
|
||||||
|
unless quiet (putStrLn $ display license)
|
||||||
|
return $ Just (LiLicense license)
|
||||||
|
Nothing ->
|
||||||
|
return Nothing
|
||||||
|
getPackageLicense quiet p@PackageIdentifier{..} Nothing = do
|
||||||
unless quiet (putStr $ display p ++ "...")
|
unless quiet (putStr $ display p ++ "...")
|
||||||
let
|
let
|
||||||
url =
|
url =
|
||||||
@ -169,15 +203,16 @@ getPackageLicense quiet p@PackageIdentifier{..} = do
|
|||||||
orderPackagesByLicense
|
orderPackagesByLicense
|
||||||
:: Bool
|
:: Bool
|
||||||
-> Maybe PackageIdentifier
|
-> Maybe PackageIdentifier
|
||||||
|
-> Maybe [(PackageName, License)]
|
||||||
-> Set PackageIdentifier
|
-> Set PackageIdentifier
|
||||||
-> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier)
|
-> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier)
|
||||||
orderPackagesByLicense quiet maybeP =
|
orderPackagesByLicense quiet maybeP maybeLicenses =
|
||||||
let
|
let
|
||||||
cond =
|
cond =
|
||||||
maybe (const False) (==) maybeP
|
maybe (const False) (==) maybeP
|
||||||
|
|
||||||
insertPackage package orderedPackages' = do
|
insertPackage package orderedPackages' = do
|
||||||
maybeLicense <- getPackageLicense quiet package
|
maybeLicense <- getPackageLicense quiet package maybeLicenses
|
||||||
|
|
||||||
(orderedPackages, failed) <- orderedPackages'
|
(orderedPackages, failed) <- orderedPackages'
|
||||||
return $
|
return $
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user