packages feed

rhbzquery 0.4.2 → 0.4.3

raw patch · 7 files changed

+29/−13 lines, 7 files

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # rhbzquery releases +## 0.4.3 (2021-02-15)+- support status with '<STATE' and '>STATE'+- Bugzilla uses 'notequals' (not 'notequal')+- fix missing EPEL version prefix+ ## 0.4.2 (2021-01-08) - add --query command - add --server option
README.md view
@@ -28,6 +28,8 @@  `rhbzquery --query rhel8 ...`: open an advanced bugzilla search for RHEL 8 +`rhbzquery xyz '<modified'`: xyz bugs not yet in MODIFIED or ON_QA, etc.+ ### Help `rhbzquery --help` describes arguments 
rhbzquery.cabal view
@@ -1,5 +1,5 @@ name:                rhbzquery-version:             0.4.2+version:             0.4.3 synopsis:            Bugzilla query tool description:         A CLI tool for creating bugzilla queries for bugzilla.redhat.com.@@ -7,7 +7,7 @@ license-file:        LICENSE author:              Jens Petersen <petersen@redhat.com> maintainer:          Jens Petersen <petersen@redhat.com>-copyright:           2020  Jens Petersen <petersen@redhat.com>+copyright:           2020-2021  Jens Petersen <petersen@redhat.com> category:            Utils homepage:            https://github.com/juhp/rhbzquery bug-reports:         https://github.com/juhp/rhbzquery/issues
src/Fields.hs view
@@ -13,7 +13,8 @@ import Numeric.Natural  import Common-import ParseArg (ArgType(..), Operator(..), ProductVersion(..), showOp)+import ParseArg (ArgType(..), Operator(..), ProductVersion(..), showOp,+                 statusList)  data BzFields = BzProduct               | BzVersion@@ -45,7 +46,9 @@ argToFields i arg =   case arg of     ArgProdVer prodver -> (i,productVersionQuery prodver)-    ArgStatusAll  -> (i,[])+    ArgStatusAll -> (i,[])+    ArgStatusBefore st -> (i, [(BzParameter "bug_status", s) | s <- takeWhile (/= st) statusList])+    ArgStatusAfter st -> (i, [(BzParameter "bug_status", s) | s <- (tail . dropWhile (/= st)) statusList])     ArgParameter p op v ->       let param = mapField p           val = if p == "sst"@@ -77,7 +80,7 @@                                         ,(BzVersion, show n)] productVersionQuery (EPEL Nothing) = [(BzProduct, "Fedora EPEL")] productVersionQuery (EPEL (Just n)) = [(BzProduct, "Fedora EPEL")-                                      ,(BzVersion, show n)]+                                      ,(BzVersion, "epel" ++ show n)] productVersionQuery (RHEL ver) =   case versionBranch ver of     [] -> error' "Can't search RHEL without version"
src/Help.hs view
@@ -5,6 +5,7 @@ module Help (detailedHelp) where +import Data.List.Extra #if !MIN_VERSION_base(4,11,0) import Data.Monoid ((<>)) #endif@@ -18,7 +19,7 @@   [ P.empty   , P.text "Tool for generating bugzilla queries"   , P.empty-  , P.text "STATUS = " <> P.lbrace <> P.align (P.fillCat (P.punctuate P.comma (map P.text (statusList ++ ["ALL (open and closed)"]))) <> P.rbrace)+  , P.text "STATUS = " <> P.lbrace <> P.align (P.fillCat (P.punctuate P.comma (map P.text (map lower statusList ++ ["all (open and closed)", "'<STATE'", "'>STATE'"]))) <> P.rbrace)   , P.text "PRODUCTVERSION = " <> P.lbrace <> P.align (P.fillCat (P.punctuate P.comma (map P.text ["rawhide", "fedora", "fXY", "epel", "epelX", "rhel8", "rhel7", "rhelX.Z"])) <> P.rbrace)   , P.text "op = search operator (eg '~' for substring: \"summary~akeyword\")"   , P.empty
src/Main.hs view
@@ -99,6 +99,8 @@     hasStatusSet :: [ArgType] -> Bool     hasStatusSet [] = False     hasStatusSet (ArgStatusAll:_) = True+    hasStatusSet ((ArgStatusBefore _):_) = True+    hasStatusSet ((ArgStatusAfter _):_) = True     hasStatusSet ((ArgParameter "bug_status" _ _):_) = True     hasStatusSet ((ArgParameter "status" _ _):_) = True     hasStatusSet (_:rest) = hasStatusSet rest
src/ParseArg.hs view
@@ -24,7 +24,7 @@ argHelp :: String argHelp = "[COMPONENT|STATUS|PRODUCTVERSION|FIELD=VALUE|FIELDopVALUE]..." -data Operator = Equals | NotEqual+data Operator = Equals | NotEquals               | Substring | NotSubstring               | Regexp |NotRegexp               | CaseSubstring@@ -77,7 +77,7 @@ opData :: Operator -> OperatorData opData NoOp = OpNull "~noop~" "ignore (comment out query field)" opData Equals = OpUnary "=" "is equal to"-opData NotEqual = OpUnary "!=" "is not equal to"+opData NotEquals = OpUnary "!=" "is not equal to" opData AnyExact = OpUnary "~anyexact=" "is equal to any of the strings" opData Substring = OpUnary "~" "contains the string" opData NotSubstring = OpUnary "!~" "does not contain the string"@@ -98,6 +98,8 @@  data ArgType = ArgProdVer ProductVersion              | ArgStatusAll+             | ArgStatusBefore String+             | ArgStatusAfter String              | ArgParameter String Operator String              | ArgParameterEmpty String Bool              | ArgComponent String@@ -128,11 +130,12 @@  parseStatus :: String -> Maybe ArgType parseStatus s =-  let caps = upper s in-    if caps == "ALL"-    then Just ArgStatusAll-    else-      ArgParameter "bug_status" Equals <$> find (== upper s) statusList+  case upper s of+    "" -> error' "malformed status string"+    "ALL" -> Just ArgStatusAll+    ('<':st) -> ArgStatusBefore <$> find (== st) statusList+    ('>':st) -> ArgStatusAfter <$> find (== st) statusList+    caps -> ArgParameter "bug_status" Equals <$> find (== caps) statusList  parseField :: String -> Maybe ArgType parseField ps =