packages feed

rhbzquery 0.4.1 → 0.4.2

raw patch · 7 files changed

+39/−27 lines, 7 files

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # rhbzquery releases +## 0.4.2 (2021-01-08)+- add --query command+- add --server option+ ## 0.4.1 (2020-12-17) - set no stdout buffering (reported by @clrkwllms) - change license from BSD3 to GPLv2+ and add SPDX tags
README.md view
@@ -10,11 +10,11 @@  ## Usage examples -`rhbzquery f33 xyz` : F33 bugs for package xyz+`rhbzquery f33 xyz` : Fedora 33 bugs for package xyz  `rhbzquery closed rawhide xyz` : closed rawhide bugs for package xyz -`rhbzquery --mine` : your open bugs (gets userid from `.bugzillarc`)+`rhbzquery --mine` : your open bugs (gets userid from `~/.bugzillarc`)  `rhbzquery rhel8.3 bash` : RHEL 8.3 bash bugs @@ -25,6 +25,8 @@ `rhbzquery component~bugzilla summary~bugzilla` : open bugs with component and summary containing "bugzilla"  `rhbzquery --file f33 xyz` : file a bug against the xyz package in F33++`rhbzquery --query rhel8 ...`: open an advanced bugzilla search for RHEL 8  ### Help `rhbzquery --help` describes arguments
TODO view
@@ -1,4 +1,3 @@-- --url for server - tui bug browser - --json output - cc=me, reporter=me
rhbzquery.cabal view
@@ -1,5 +1,5 @@ name:                rhbzquery-version:             0.4.1+version:             0.4.2 synopsis:            Bugzilla query tool description:         A CLI tool for creating bugzilla queries for bugzilla.redhat.com.@@ -16,7 +16,7 @@                      README.md                      TODO cabal-version:       1.18-tested-with:         GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.2+tested-with:         GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.3  source-repository head   type:                git
src/Fields.hs view
@@ -98,7 +98,7 @@           "flag" -> "flagtypes.name"           "flags" -> "flagtypes.name"           p -> L.replace "-" "_" p-  in if longname `elem` allBzFields+  in if longname `elem` ("format":allBzFields)      then longname      else if "cf_" ++ longname `elem` allBzFields           then "cf_" ++ longname
src/Main.hs view
@@ -35,7 +35,9 @@ import Paths_rhbzquery import User -data QueryMode = BugList | ListFields | ListOperators | CreateBug | APIQuery+data QueryMode = BugList | ListFields | ListOperators | CreateBug+               | QueryPage | APIQuery+  deriving Eq  main :: IO () main = do@@ -44,25 +46,28 @@     run <$>     switchWith 'n' "dryrun" "Do not open url" <*>     switchWith 'm' "mine" "My bugs" <*>+    strOptionalWith 's' "server" "SERVER" ("Bugzilla server [default: " ++ brc ++ "]") brc <*>     (flagWith' ListFields 'l' "list-fields" "List query FIELDs" <|>      flagWith' ListOperators 'o' "list-operators" "List op search operator types" <|>      flagWith' CreateBug 'f' "file" "File a bug" <|>+     flagWith' QueryPage 'q' "query" "Open advanced query page" <|>      flagWith BugList APIQuery 'w' "api" "Web API query") <*>     many (strArg argHelp)   where-    run :: Bool -> Bool -> QueryMode -> [String] -> IO ()+    run :: Bool -> Bool -> String -> QueryMode -> [String] -> IO ()     -- FIXME list aliases-    run _ _ ListFields _ = mapM_ putStrLn allBzFields-    run _ _ ListOperators _ =+    run _ _ _ ListFields _ = mapM_ putStrLn allBzFields+    run _ _ _ ListOperators _ =       mapM_ putStrLn $ map showOpHelp operators ++         ["", "content~ uses matches", "content!~ uses notmatches"]     -- FIXME should really use some and many-    run _ _ _ [] = error' "please give an argument or --help"-    run dryrun mine mode args = do-      user <- if mine+    run _ _ _ _ [] = error' "please give an argument or --help"+    run dryrun mine server mode args = do+      user <-+        if mine         then do-        mail <- getBzUser-        return [ArgParameter "assigned_to" Equals mail]+          mail <- getRhBzUser+          return [ArgParameter "assigned_to" Equals mail]         else return []       let argtypes = mapMaybe readBzQueryArg args           url =@@ -71,20 +76,22 @@                     CreateBug -> L.nub $ concatMap argToSimpleField argtypes                     _ ->                       let status = [ArgParameter "bug_status" Equals "__open__" | not (hasStatusSet argtypes)]-                      in L.nub $ numberMetaFields $ status ++ user ++ argtypes-            in queryURL mode query+                          advanced = [ArgParameter "format" Equals "advanced" | mode == QueryPage]+                      in L.nub $ numberMetaFields $ advanced ++ status ++ user ++ argtypes+            in queryURL server mode query       B.putStrLn url       unless dryrun $ do         whenJustM (findExecutable "xdg-open") $ \xdgOpen ->           cmd_ xdgOpen [B.unpack url] -    queryURL :: QueryMode -> [(BzFields,String)] -> B.ByteString-    queryURL mode query =-      "https://" <> B.pack brc <> "/" <>+    queryURL :: String -> QueryMode -> [(BzFields,String)] -> B.ByteString+    queryURL server mode query =+      "https://" <> B.pack server <> "/" <>       case mode of         APIQuery -> "rest/bug"         BugList -> "buglist.cgi"         CreateBug -> "enter_bug.cgi"+        QueryPage -> "query.cgi"         ListFields -> "query.cgi" -- unused         ListOperators -> "query.cgi" -- unused       <> renderQuery True (bzQuery query)
src/User.hs view
@@ -3,7 +3,7 @@ -- SPDX-License-Identifier: GPL-2.0-or-later  module User (-  getBzUser+  getRhBzUser   ) where @@ -22,8 +22,8 @@  import Bugzilla -eitherBzUser :: IO (Either FilePath String)-eitherBzUser = do+eitherRhBzUser :: IO (Either FilePath String)+eitherRhBzUser = do   home <- getEnv "HOME"   let rc = home </> ".bugzillarc"   -- FIXME assumption if file exists then it has b.r.c user@@ -41,9 +41,9 @@       ini <- T.readFile inifile       return $ either error fn $ parseIniFile ini iniparser -getBzUser :: IO String-getBzUser = do-  euser <- eitherBzUser+getRhBzUser :: IO String+getRhBzUser = do+  euser <- eitherRhBzUser   case euser of     Right user -> return user     Left rc -> do@@ -51,7 +51,7 @@       when (emailIsValid email) $ do         writeFile rc $ "[" <> brc <> "]\nuser = " <> email <> "\n"         putStrLn $ "Saved in " ++ rc-      getBzUser+      getRhBzUser   where     emailIsValid :: String -> Bool     emailIsValid = Email.isValid . B.pack