rhbzquery 0.4.1 → 0.4.2
raw patch · 7 files changed
+39/−27 lines, 7 files
Files
- ChangeLog.md +4/−0
- README.md +4/−2
- TODO +0/−1
- rhbzquery.cabal +2/−2
- src/Fields.hs +1/−1
- src/Main.hs +21/−14
- src/User.hs +7/−7
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