cblrepo 0.23.0 → 0.24.0
raw patch · 6 files changed
+49/−32 lines, 6 filesdep ~aeson
Dependency ranges changed: aeson
Files
- cblrepo.cabal +2/−2
- src/Main.hs +3/−1
- src/Upgrades.hs +27/−23
- src/Util/HackageIndex.hs +14/−4
- src/Util/Misc.hs +1/−1
- src/Versions.hs +2/−1
cblrepo.cabal view
@@ -1,5 +1,5 @@ name: cblrepo-version: 0.23.0+version: 0.24.0 cabal-version: >= 1.23 license: OtherLicense license-file: LICENSE-2.0@@ -62,7 +62,7 @@ Unixutils ==1.54.*, unix ==2.7.*, ansi-wl-pprint ==0.6.*,- aeson ==0.11.*,+ aeson ==1.0.*, stringsearch ==0.3.*, optparse-applicative ==0.13.*, safe ==0.3.*,
src/Main.hs view
@@ -81,7 +81,9 @@ cmdUpgradesCmd = command "upgrades" (info (helper <*> cmdUpgradesOpts) (fullDesc <> progDesc "Check for packages that can be upgraded")) where- cmdUpgradesOpts = CmdUpgrades <$> switch (short 's' <> help "A shorter output suitable for scripting")+ cmdUpgradesOpts = CmdUpgrades+ <$> switch (short 's' <> help "A shorter output suitable for scripting")+ <*> switch (short 'x' <> help "Limit list to packages with new x-revision") cmdListPkgsCmd = command "list" (info (helper <*> cmdListPkgsOpts) (fullDesc <> progDesc "List packages in repo")) where
src/Upgrades.hs view
@@ -28,31 +28,35 @@ import Control.Monad.Reader import Data.Maybe import Distribution.Text-import Distribution.Version+import Distribution.Version hiding (thisVersion) upgrades :: Command () upgrades = do- db <- asks (dbFile . fst) >>= liftIO . readDb- aD <- asks $ appDir . fst- aCS <- asks $ idxStyle .optsCmd . fst- cfg <- asks snd- availPkgsNVers <- liftIO $ buildPkgVersions <$> readIndexFile aD (getIndexFileName cfg)- let nonBasePkgs = filter (not . isBasePkg) db- pkgsNVers = map (pkgName &&& pkgVersion &&& pkgXRev) nonBasePkgs- outdated = filter- (\ (p, vx) -> maybe False (> vx) (latestVersion availPkgsNVers p))- pkgsNVers- printer = if aCS- then printOldShort- else printOld- liftIO $ mapM_ (printer availPkgsNVers) outdated+ db <- asks (dbFile . fst) >>= liftIO . readDb+ aD <- asks $ appDir . fst+ aCS <- asks $ idxStyle .optsCmd . fst+ xrevsOnly <- asks $ xrevs . optsCmd . fst+ cfg <- asks snd+ availPkgsNVers <- liftIO $ buildPkgVersions <$> readIndexFile aD (getIndexFileName cfg)+ let nonBasePkgs = filter (not . isBasePkg) db+ pkgsNVers = map (pkgName &&& pkgVersion &&& pkgXRev) nonBasePkgs+ filterFunc = if xrevsOnly+ then (\ (p, (v, x)) -> maybe False (> x) (snd <$> thisVersion availPkgsNVers p v))+ else (\ (p, vx) -> maybe False (> vx) (latestVersion availPkgsNVers p undefined))+ outdated = filter filterFunc pkgsNVers+ printer = if aCS+ then printNewShort+ else printUpgrades+ if xrevsOnly+ then liftIO $ mapM_ (printer thisVersion availPkgsNVers) outdated+ else liftIO $ mapM_ (printer latestVersion availPkgsNVers) outdated -printOld :: PkgVersions -> (String, (Version, Int)) -> IO ()-printOld avail (p, (v, x)) = putStrLn $ p ++ ": " ++ display v ++ ":x" ++ show x ++ " (" ++ display lv ++ ":x" ++ show lx ++ ")"- where- (lv, lx) = fromJust $ latestVersion avail p+printUpgrades verFunc avail (pkgName, (pkgVer, pkgXRev)) = putStrLn $+ pkgName ++ ": " ++ display pkgVer ++ ":x" ++ show pkgXRev ++ " (" ++ display lv ++ ":x" ++ show lx ++ ")"+ where+ (lv, lx) = fromJust $ verFunc avail pkgName pkgVer -printOldShort :: PkgVersions -> (String, (Version, Int)) -> IO ()-printOldShort avail (p, _) = putStrLn $ p ++ "," ++ display l- where- l = fst $ fromJust $ latestVersion avail p+printNewShort verFunc avail (pkgName, (pkgVer, _)) = putStrLn $+ pkgName ++ "," ++ display l+ where+ l = fst $ fromJust $ verFunc avail pkgName pkgVer
src/Util/HackageIndex.hs view
@@ -58,7 +58,8 @@ Just ver -> createPkgVerMap (M.insertWith (++) (head parts) [(ver, xrev)] acc) es where parts = splitDirectories (Tar.entryPath e)- ver = parts `atMay` 1 >>= simpleParse+ ver = if length parts == 3 then parts `atMay` 1 >>= simpleParse+ else Nothing content = case Tar.entryContent e of Tar.NormalFile c _ -> Just $ BSLU.toString c _ -> Nothing@@ -70,9 +71,18 @@ createPkgVerMap _ (Tar.Fail _) = undefined latestVersion :: PkgVersions- -> String -- ^ package name- -> Maybe (Version, Int)-latestVersion pnv pkg = last . sort <$> M.lookup pkg pnv+ -> String -- ^ package name+ -> Version+ -> Maybe (Version, Int)+latestVersion pnv pkg _ = last . sort <$> M.lookup pkg pnv++thisVersion :: PkgVersions+ -> String -- ^ package name+ -> Version+ -> Maybe (Version, Int) -- ^ xrev+thisVersion pnvs pkgName pkgVer = do+ vers <- M.lookup pkgName pnvs+ find (\ (v, _) -> v == pkgVer) vers extractCabal :: BSL.ByteString -- ^ the index -> String -- ^ package name
src/Util/Misc.hs view
@@ -176,7 +176,7 @@ | CmdListPkgs { listGhc :: Bool, listDistro :: Bool, noListRepo :: Bool , listFmt :: CmdListFormat, pkgs :: [String] }- | CmdUpgrades { idxStyle :: Bool }+ | CmdUpgrades { idxStyle :: Bool, xrevs :: Bool } | CmdPkgBuild { ghcVer :: Version, ghcRel :: Int, patchDir :: FilePath, pkgs :: [String] } | CmdConvertDb { inDbFile :: FilePath, outDbFile :: FilePath } | CmdRemovePkg { pkgs :: [String] }
src/Versions.hs view
@@ -25,6 +25,7 @@ import Data.Map as M import Distribution.Text import Distribution.Version+import Data.List versions :: Command () versions = do@@ -35,7 +36,7 @@ let printFunc = if l then printLatestVersion else printAllVersions liftIO $ do pkgsNVers <- buildPkgVersions <$> readIndexFile aD (getIndexFileName cfg)- mapM_ (\ pkg -> printFunc (pkg, M.lookup pkg pkgsNVers)) pkgs+ mapM_ (\ pkg -> printFunc (pkg, reverse . sort <$> M.lookup pkg pkgsNVers)) pkgs printAllVersions :: (String, Maybe [(Version, Int)]) -> IO () printAllVersions (p, Nothing) = putStrLn $ p ++ ": No such package"