-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Select a subset of RPM packages
--   
--   A library for selecting a subset of RPM (sub)packages.
@package select-rpms
@version 0.3.1

module SelectRPMs

-- | The Select type specifies the subpackage selection
--   
--   Can use name globs: eg "*-devel" or "lib*"
data Select

-- | all packages
All :: Select

-- | interactive prompting
Ask :: Select
PkgsReq :: [String] -> [String] -> [String] -> [String] -> Select

-- | Default package selection
selectDefault :: Select

-- | An optparse-applicative Parser for Select
selectRpmsOptions :: Parser Select

-- | An alternative CLI args option to parse String to Select of rpm
--   packages
installArgs :: String -> Select

-- | Check package Select options have no empty strings
--   
--   (deprecated export)
checkSelection :: Monad m => Select -> m ()

-- | Converts a list of RPM files to sorted NVRA's
--   
--   (since 0.3.1 no longer excludes debuginfo and debugsource packages)
rpmsToNVRAs :: [String] -> [NVRA]

-- | Current state of a package NVR
data Existence

-- | NVR is already installed
ExistingNVR :: Existence

-- | NVR is different to installed package
ChangedNVR :: Existence

-- | package is not currently installed
NotInstalled :: Existence

-- | Combines Existence state with an NVRA
type ExistNVRA = (Existence, NVRA)

-- | Sets prompt default behaviour for yes/no questions
data Yes
No :: Yes
Yes :: Yes

-- | How to handle already installed subpackages: re-install, skip, or
--   default update
--   
--   The default strategy is to select existing subpackages, otherwise all.
--   
--   The constructors are only really needed internally but exported for
--   documentation.
data ExistingStrategy

-- | skip reinstall of same NVRs
ExistingNoReinstall :: ExistingStrategy

-- | skip installed subpkgs
ExistingSkip :: ExistingStrategy

-- | only update existing subpkgs
ExistingOnly :: ExistingStrategy

-- | abort for existing subpkg
ExistingError :: ExistingStrategy

-- | An optparse-applicative Parser for ExistingStrategy
existingStrategyOption :: Parser ExistingStrategy

-- | Decide list of NVRs based on a Select selection (using a package
--   prefix)
decideRPMs :: Yes -> Bool -> Maybe ExistingStrategy -> Select -> String -> [NVRA] -> IO [ExistNVRA]

-- | Render a NVRA as rpm file
nvraToRPM :: NVRA -> FilePath

-- | Group rpms by arch (subdirs)
groupOnArch :: FilePath -> [ExistNVRA] -> [(FilePath, [ExistNVRA])]

-- | Package manager
data PkgMgr
DNF3 :: PkgMgr
DNF5 :: PkgMgr
RPM :: PkgMgr
OSTREE :: PkgMgr

-- | An optparse-applicative Parser for PkgMgr
--   
--   (since 0.3.1)
pkgMgrOpt :: Parser PkgMgr

-- | Do installation of selected rpm packages
installRPMs :: Bool -> Bool -> Maybe PkgMgr -> Yes -> [(FilePath, [ExistNVRA])] -> IO ()

-- | Do installation of packages (with allowerasing switch)
--   
--   (since 0.3.1)
installRPMsAllowErasing :: Bool -> Bool -> Maybe PkgMgr -> Bool -> Yes -> [(FilePath, [ExistNVRA])] -> IO ()
instance GHC.Classes.Eq SelectRPMs.Select
instance GHC.Classes.Eq SelectRPMs.ExistingStrategy
instance GHC.Classes.Eq SelectRPMs.Yes
instance GHC.Show.Show SelectRPMs.Existence
instance GHC.Classes.Ord SelectRPMs.Existence
instance GHC.Classes.Eq SelectRPMs.Existence
instance GHC.Classes.Eq SelectRPMs.PkgMgr
