packages feed

dnf-repo 0.5.3 → 0.5.4

raw patch · 6 files changed

+30/−45 lines, 6 filesdep +simple-promptdep −unix

Dependencies added: simple-prompt

Dependencies removed: unix

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # dnf-repo releases +## 0.5.4 (2023-05-06)+- Revert "don't printAction's if no args"+- use simple-prompt+- just check for SUDO_USER instead of euid+ ## 0.5.3 (2022-12-31) - for copr template file, detect fedora distro otherwise assume epel - don't print actions if no args
README.md view
@@ -3,7 +3,7 @@ A wrapper of the dnf package manager for fine control of enabled/disabled yum repos (eg Copr repos). -dnf is the package manager used by Fedora Linux and also modern RHEL.+dnf is the package manager used by Fedora Linux and also from RHEL 8 on.  DNF is a bit slow at handling multiple repos because it attempts to refresh the cached repodata frequently. So it can be advantageous@@ -22,7 +22,7 @@  ```shellsession $ dnf-repo --version-0.5.3+0.5.4 $ dnf-repo --help DNF wrapper repo tool @@ -36,6 +36,7 @@                   --disable-debuginfo | --enable-source | --disable-source |                   (-c|--add-copr COPR) | (-k|--add-koji REPO) |                   (-u|--repourl URL)] [DNFARGS]+   see https://github.com/juhp/dnf-repo#readme  Available options:
dnf-repo.cabal view
@@ -1,5 +1,5 @@ name:                dnf-repo-version:             0.5.3+version:             0.5.4 synopsis:            DNF wrapper tool to control repos description:         A command-line wrapper of the dnf package manager to@@ -8,7 +8,7 @@ license-file:        LICENSE author:              Jens Petersen <juhpetersen@gmail.com> maintainer:          Jens Petersen <juhpetersen@gmail.com>-copyright:           2022  Jens Petersen <juhpetersen@gmail.com>+copyright:           2022-2023  Jens Petersen <juhpetersen@gmail.com> category:            Utility homepage:            https://github.com/juhp/dnf-repo bug-reports:         https://github.com/juhp/dnf-repo/issues@@ -20,7 +20,8 @@                      ||  == 8.8.4                      ||  == 8.10.7                      ||  == 9.0.2-                     ||  == 9.2.5+                     ||  == 9.2.7+                     ||  == 9.4.5 data-dir:            data data-files:          copr.fedorainfracloud.orgCOLONOWNERCOLONREPO.repo                      koji-REPO.repo@@ -45,7 +46,7 @@                        http-directory >= 0.1.9,                        simple-cmd,                        simple-cmd-args >= 0.1.8,-                       unix+                       simple-prompt   default-language:    Haskell2010   ghc-options:         -Wall   if impl(ghc >= 8.0)
src/ExpireRepos.hs view
@@ -6,6 +6,7 @@ import Control.Monad import Data.List (nub) import SimpleCmd (error')+import SimplePrompt (yesno)  import Sudo @@ -16,7 +17,7 @@ expireRepo dryrun debug repo = do   old <- read <$> readFile expiredFile :: IO [String]   let expired = nub $ old ++ [repo]-  ok <- yesno $ "Mark '" ++ repo ++ "' cache expired"+  ok <- yesno Nothing $ "Mark '" ++ repo ++ "' cache expired"   when ok $ do     doSudo dryrun debug "sed" ["-i", "-e",                                "s/" ++ renderShow old ++ "/" ++ renderShow expired ++ "/",@@ -41,7 +42,7 @@     else do     mapM_ putStrLn old     putStrLn ""-    ok <- yesno "Unset cache expirations"+    ok <- yesno Nothing "Unset cache expirations"     when ok $ do       doSudo dryrun debug "sed" ["-i", "-e",                                "s/" ++ renderShow old ++ "/" ++ renderShow [] ++ "/",
src/Main.hs view
@@ -8,15 +8,16 @@ import Data.Bifunctor (bimap) import Data.Char (isDigit) import Data.List.Extra-import Data.Maybe (mapMaybe, maybeToList)+import Data.Maybe (isJust, mapMaybe, maybeToList) import Network.HTTP.Directory (httpExists', (+/+)) import SimpleCmd import SimpleCmdArgs+import SimplePrompt (yesno) import System.Directory+import System.Environment (lookupEnv) import System.FilePath import System.IO (hSetBuffering, stdout, BufferMode(NoBuffering)) import System.IO.Extra (withTempDir)-import System.Posix.User (getEffectiveUserName,getLoginName) import System.Time.Extra (sleep)  import Paths_dnf_repo (getDataFileName, version)@@ -26,7 +27,7 @@  main :: IO () main = do-  checkEuid+  checkSudo   simpleCmdArgs' (Just version)     "DNF wrapper repo tool"     "see https://github.com/juhp/dnf-repo#readme" $@@ -91,7 +92,7 @@     nameStates <- sort <$> concatMapM readRepos repofiles     let actions = selectRepo exact nameStates modes         moreoutput = not (null args) || null actions || listrepos-    unless (null actions || null args || quiet) $ do+    unless (null actions || quiet) $ do       mapM_ putStrLn $ reduceOutput $ mapMaybe (printAction save) actions       when moreoutput $         warning ""@@ -116,7 +117,7 @@         else do         let changes = concatMap saveRepo actions         unless (null changes) $ do-          ok <- yesno $ "Save changed repo" ++ " enabled state" ++ ['s' | length changes > 1]+          ok <- yesno Nothing $ "Save changed repo" ++ " enabled state" ++ ['s' | length changes > 1]           when ok $             doSudo dryrun debug "dnf" $ "config-manager" : changes     if null args@@ -194,7 +195,7 @@   case mowned of     Just owner -> warning $ repofile +-+ "owned by" +-+ owner     Nothing -> do-      ok <- yesno $ "Remove " ++ takeFileName repofile+      ok <- yesno Nothing $ "Remove " ++ takeFileName repofile       when ok $ do         doSudo dryrun debug "rm" [repofile] @@ -225,11 +226,9 @@                then Just relver                else error' $ "unknown releasever:" +-+ relver -checkEuid :: IO ()-checkEuid =-  -- getLoginName fails for proot-  unlessM (cmdBool "pgrep" ["--session", "0", "proot"]) $ do-  user <- getLoginName-  euser <- getEffectiveUserName-  when (user /= euser) $-    warning "*Recommended not to run dnf-repo as root*"+checkSudo :: IO ()+checkSudo = do+  -- previously checked for euid (no username for termux-fedora)+  issudo <- isJust <$> lookupEnv "SUDO_USER"+  when issudo $+    warning "*No need to run dnf-repo directly with sudo*"
src/Sudo.hs view
@@ -1,11 +1,8 @@ module Sudo (-  doSudo,-  prompt_,-  yesno+  doSudo   ) where  import Control.Monad-import Data.List.Extra (lower) import SimpleCmd (cmdN, sudo_)  -- FIXME make this silent (simple-cmd-0.2.7) unless debug@@ -16,22 +13,3 @@     else do     when debug $ cmdN c args     sudo_ c args--prompt :: String -> IO String-prompt desc = do-  putStr $ desc ++ ": "-  getLine--prompt_ :: String -> IO ()-prompt_ desc = do-  void $ prompt desc--yesno :: String -> IO Bool-yesno desc = do-  inp <- prompt $ desc ++ "? [y/n]"-  case lower inp of-    "y" -> return True-    "yes" -> return True-    "n" -> return False-    "no" -> return False-    _ ->  yesno desc