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 +5/−0
- README.md +3/−2
- dnf-repo.cabal +5/−4
- src/ExpireRepos.hs +3/−2
- src/Main.hs +13/−14
- src/Sudo.hs +1/−23
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