rhbzquery 0.4.2 → 0.4.3
raw patch · 7 files changed
+29/−13 lines, 7 files
Files
- ChangeLog.md +5/−0
- README.md +2/−0
- rhbzquery.cabal +2/−2
- src/Fields.hs +6/−3
- src/Help.hs +2/−1
- src/Main.hs +2/−0
- src/ParseArg.hs +10/−7
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 =