packages feed

rpmbuild-order 0.1 → 0.2

raw patch · 5 files changed

+81/−40 lines, 5 files

Files

ChangeLog view
@@ -1,3 +1,9 @@-* 0.1+* 0.2 (2018-08-17)+- error if no spec file+- filter out hidden files from deps search+- add --version+- generate manpage with help2man++* 0.1 (2018-07-18) - initial release with sort, deps and rdeps (reverse dependencies) commands 
README.md view
@@ -1,4 +1,6 @@ [![Build Status](https://travis-ci.org/juhp/rpmbuild-order.png)](https://travis-ci.org/juhp/rpmbuild-order)+[![Hackage](http://img.shields.io/hackage/v/rpmbuild-order.png)](http://hackage.haskell.org/package/rpmbuild-order)+[![license](https://img.shields.io/badge/license-BSD-brightgreen.svg)](https://opensource.org/licenses/BSD-3-Clause)  # rpmbuild-order 
RpmbuildOrder.hs view
@@ -2,9 +2,6 @@  module Main where -import qualified Distribution.Verbosity as Verbosity-import qualified Distribution.ReadE as ReadE- import System.Console.GetOpt           (getOpt, ArgOrder(..), OptDescr(..), ArgDescr(..), usageInfo) import System.Exit (exitSuccess, exitFailure)@@ -32,6 +29,7 @@ import Control.Monad (guard, when, unless) import Data.Maybe (catMaybes, fromMaybe, mapMaybe) import Data.List (delete, intersperse, stripPrefix)+import Data.Version  (showVersion)  #if (defined(MIN_VERSION_base) && MIN_VERSION_base(4,8,2)) #else@@ -46,31 +44,38 @@   where f filename = filename /= "." && filename /= ".." #endif +import Paths_rpmbuild_order (version)+ main :: IO () main =   E.resolveT handleException $ do   argv <- T.lift Env.getArgs   let (opts, args, errors) = getOpt Permute options argv-  if length args < 2-    then T.lift $ help >> exitFailure-    else do-      let (com:pkgs) = args-      unless (null errors) $ E.throwT $ concat errors-      unless (com `elem` ["sort", "deps", "rdeps"]) $-        E.throwT $ "Unknown command " ++ com-      flags <--         E.ExceptionalT $ return $-            foldr (=<<)-               (return-                Flags {optHelp = False,-                       optVerbosity = Verbosity.silent,-                       optFormat = package,-                       optParallel = Nothing,-                       optBranch = Nothing})-               opts-      if optHelp flags-        then T.lift $ help >> exitSuccess-        else runCommand flags com $ map (removeSuffix "/") pkgs+  flags <-+    E.ExceptionalT $ return $+        foldr (=<<)+           (return+            Flags {optHelp = False,+                   optVersion = False,+                   optVerbosity = False,+                   optFormat = package,+                   optParallel = Nothing,+                   optBranch = Nothing})+           opts+  if optHelp flags+    then T.lift $ help >> exitSuccess+    else+    if optVersion flags+    then T.lift $ putStrLn $ showVersion version+    else+      if length args < 2+      then T.lift $ help >> exitFailure+      else do+        let (com:pkgs) = args+        unless (null errors) $ E.throwT $ concat errors+        unless (com `elem` ["sort", "deps", "rdeps"]) $+          E.throwT $ "Unknown command " ++ com+        runCommand flags com $ map (removeSuffix "/") pkgs   where     help =       Env.getProgName >>= \programName ->@@ -94,7 +99,7 @@       let dir = maybe file (file </>) mdir           pkg = takeBaseName file in         checkFile $ dir </> pkg ++ ".spec"-      else return Nothing+      else error $ "No spec file found for " ++ file   where     checkFile :: FilePath -> IO (Maybe FilePath)     checkFile f = do@@ -106,7 +111,8 @@ data Flags =    Flags {       optHelp :: Bool,-      optVerbosity :: Verbosity.Verbosity,+      optVersion :: Bool,+      optVerbosity :: Bool,       optFormat :: SourcePackage -> String,       optParallel :: Maybe String,       optBranch :: Maybe FilePath@@ -118,6 +124,9 @@     Option ['h'] ["help"]       (NoArg (\flags -> return $ flags{optHelp = True}))       "Show options"+  , Option ['V'] ["version"]+      (NoArg (\flags -> return $ flags{optVersion = True}))+      "Show version"   , Option ['p'] ["parallel"]       (OptArg         (\mstr flags ->@@ -146,13 +155,10 @@          "KIND")       "output format: 'package' (default), 'spec', or 'dir'"   , Option ['v'] ["verbose"]-      (ReqArg-         (\str flags ->-            fmap (\n -> flags{optVerbosity = n}) $-            E.fromEither $-            ReadE.runReadE Verbosity.flagToVerbosity str)-         "N")-      "verbosity level: 0..3"+      (NoArg+         (\flags ->+            return flags{optVerbosity = True}))+      "verbose output"   ]  type Package = String@@ -210,25 +216,25 @@   depsSpecFiles :: Bool -> Flags -> [Package] -> E.ExceptionalT String IO () depsSpecFiles rev flags pkgs = do-  allpkgs <- T.lift $ listDirectory "."+  allpkgs <- T.lift $ filter (\ f -> head f /= '.') <$> listDirectory "."   (graph, nodes) <- createGraphNodes flags allpkgs pkgs   let dir = if rev then Graph.suc' else Graph.pre'   sortSpecFiles flags $ map package $ xdfsWith dir third nodes graph   where     third (_, _, c, _) = c -readProvides :: Verbosity.Verbosity -> FilePath -> IO [String]+readProvides :: Bool -> FilePath -> IO [String] readProvides verbose file = do-  when (verbose >= Verbosity.verbose) $ hPutStrLn stderr file+  when verbose $ hPutStrLn stderr file   pkgs <- lines <$>     rpmspec ["--rpms", "--qf=%{name}\n", "--define", "ghc_version any"] Nothing file   let pkg = takeBaseName file   return $ delete pkg pkgs -getDepsSrcResolved :: Verbosity.Verbosity -> [(String,[String])] -> FilePath -> IO [String]+getDepsSrcResolved :: Bool -> [(String,[String])] -> FilePath -> IO [String] getDepsSrcResolved verbose provides file =   map (resolveBase provides) <$> do-      when (verbose >= Verbosity.verbose) $ hPutStrLn stderr file+      when verbose $ hPutStrLn stderr file       -- ignore version bounds       map (head . words) . lines <$>         rpmspec ["--buildrequires", "--define", "ghc_version any"] Nothing file
+ rpmbuild-order.1 view
@@ -0,0 +1,26 @@+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.6.+.TH RPMBUILD-ORDER "1" "August 2018" "rpmbuild-order 0.2" "User Commands"+.SH NAME+rpmbuild-order \- manual page for rpmbuild-order 0.2+.SH SYNOPSIS+.B rpmbuild-order+[\fI\,OPTIONS\/\fR] [\fI\,sort|deps|rdeps\/\fR] \fI\,PKG-SPEC-OR-DIR \/\fR...+.SH DESCRIPTION+.TP+\fB\-h\fR             \fB\-\-help\fR+Show options+.TP+\fB\-V\fR             \fB\-\-version\fR+Show version+.TP+\fB\-p[SEPARATOR]\fR  \fB\-\-parallel\fR[=\fI\,SEPARATOR\/\fR]+Display independently buildable groups of packages, optionally with separator+.TP+\fB\-b\fR BRANCHDIR   \fB\-\-branch\fR=\fI\,BRANCHDIR\/\fR+branch directory+.TP+\fB\-f\fR KIND        \fB\-\-format\fR=\fI\,KIND\/\fR+output format: 'package' (default), 'spec', or 'dir'+.TP+\fB\-v\fR             \fB\-\-verbose\fR+verbose output
rpmbuild-order.cabal view
@@ -1,5 +1,5 @@ Name:             rpmbuild-order-Version:          0.1+Version:          0.2 License:          BSD3 License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de>@@ -24,7 +24,7 @@                    GHC == 8.4.3 Cabal-Version:     >=1.6 Build-Type:        Simple-Extra-source-files: README.md TODO ChangeLog+Extra-source-files: README.md TODO ChangeLog rpmbuild-order.1  source-repository head   type:     git@@ -45,3 +45,4 @@   GHC-Options:      -Wall   Main-Is:          RpmbuildOrder.hs   Extensions:       CPP+  Other-modules:    Paths_rpmbuild_order