packages feed

licensor 0.2.2 → 0.3.0

raw patch · 5 files changed

+56/−9 lines, 5 files

Files

CHANGELOG.md view
@@ -1,3 +1,14 @@+# 0.3.0 (2019-02-05)++## Enhancements++- Use Stack (executable) to get licenses (ec8412b)+- Use `ls dependencies` instead of `list-dependencies` (4f4d41d)++## Bugs++- Fix incorrect license if package matches a Hackage package (#23)+ # 0.2.2 (2018-01-16)  - Allow http-conduit 2.3 (558fe3d)
Main.hs view
@@ -101,6 +101,7 @@         return (Just package)    maybeDependencies <- getDependencies+  maybeLicenses <- getLicenses    case maybeDependencies of     Nothing ->@@ -108,7 +109,7 @@      Just dependencies -> do       (dependenciesByLicense', failed) <--        orderPackagesByLicense quiet pid dependencies+        orderPackagesByLicense quiet pid maybeLicenses dependencies        let dependenciesByLicense = fmap (Set.map display) dependenciesByLicense' 
README.md view
@@ -3,7 +3,7 @@ [![][1]][0]  [0]: https://circleci.com/gh/jpvillaisaza/licensor-[1]: https://circleci.com/gh/jpvillaisaza/licensor.svg?style=svg+[1]: https://circleci.com/gh/jpvillaisaza/licensor.svg?style=shield  [![][2]](https://www.stackage.org/lts/package/licensor) [![][3]](https://www.stackage.org/nightly/package/licensor)
licensor.cabal view
@@ -1,8 +1,8 @@ name: licensor-version: 0.2.2+version: 0.3.0  build-type: Simple-cabal-version: >= 1.21+cabal-version: >= 1.10  license: MIT license-file: LICENSE.md
src/Licensor.hs view
@@ -16,6 +16,7 @@   ( LiLicense(..)   , LiPackage(..)   , getDependencies+  , getLicenses   , getPackage   , orderPackagesByLicense   , version@@ -116,7 +117,7 @@ getDependencies :: IO (Maybe (Set PackageIdentifier)) getDependencies = do   eitherDeps <--    Exception.try $ readProcess "stack" ["list-dependencies", "--separator", "-"] ""+    Exception.try $ readProcess "stack" ["ls", "dependencies", "--separator", "-"] ""    case eitherDeps of     Left (_ :: IOError) ->@@ -126,13 +127,46 @@       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 quiet p@PackageIdentifier{..} = do+getPackageLicense+  :: 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 ++ "...")   let     url =       "GET https://hackage.haskell.org/package/"@@ -169,15 +203,16 @@ orderPackagesByLicense   :: Bool   -> Maybe PackageIdentifier+  -> Maybe [(PackageName, License)]   -> Set PackageIdentifier   -> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier)-orderPackagesByLicense quiet maybeP =+orderPackagesByLicense quiet maybeP maybeLicenses =   let     cond =       maybe (const False) (==) maybeP      insertPackage package orderedPackages' = do-      maybeLicense <- getPackageLicense quiet package+      maybeLicense <- getPackageLicense quiet package maybeLicenses        (orderedPackages, failed) <- orderedPackages'       return $