-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | What version is the package X in stackage lts-Y.ZZ?
--
-- A command-line tool to look for version numbers for Haskell packages
-- in specific stackage resolvers. See README.md
@package staversion
@version 0.2.0.0
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Query
type PackageName = Text
-- | Resolver name at stackage like "lts-4.1".
type Resolver = String
-- | Source of packages.
data PackageSource
-- | stackage.
SourceStackage :: Resolver -> PackageSource
-- | hackage (latest)
SourceHackage :: PackageSource
-- | description of a PackageSource.
sourceDesc :: PackageSource -> Text
-- | Query for package version(s).
data Query
QueryName :: PackageName -> Query
QueryCabalFile :: FilePath -> Query
parseQuery :: String -> Query
type ErrorMsg = String
instance GHC.Classes.Ord Staversion.Internal.Query.Query
instance GHC.Classes.Eq Staversion.Internal.Query.Query
instance GHC.Show.Show Staversion.Internal.Query.Query
instance GHC.Classes.Ord Staversion.Internal.Query.PackageSource
instance GHC.Classes.Eq Staversion.Internal.Query.PackageSource
instance GHC.Show.Show Staversion.Internal.Query.PackageSource
module Staversion.Internal.Log
data LogLevel
LogDebug :: LogLevel
LogInfo :: LogLevel
LogWarn :: LogLevel
LogError :: LogLevel
data LogEntry
LogEntry :: LogLevel -> String -> LogEntry
[logLevel] :: LogEntry -> LogLevel
[logMessage] :: LogEntry -> String
data Logger
defaultLogger :: Logger
putLog :: Logger -> LogLevel -> String -> IO ()
putLogEntry :: Logger -> LogEntry -> IO ()
logDebug :: Logger -> String -> IO ()
logInfo :: Logger -> String -> IO ()
logWarn :: Logger -> String -> IO ()
logError :: Logger -> String -> IO ()
-- | FOR TEST: the IORef is the history of logged messages.
_mockLogger :: IO (Logger, IORef [LogEntry])
instance GHC.Classes.Ord Staversion.Internal.Log.LogEntry
instance GHC.Classes.Eq Staversion.Internal.Log.LogEntry
instance GHC.Show.Show Staversion.Internal.Log.LogEntry
instance GHC.Enum.Bounded Staversion.Internal.Log.LogLevel
instance GHC.Enum.Enum Staversion.Internal.Log.LogLevel
instance GHC.Classes.Ord Staversion.Internal.Log.LogLevel
instance GHC.Classes.Eq Staversion.Internal.Log.LogLevel
instance GHC.Show.Show Staversion.Internal.Log.LogLevel
instance GHC.Show.Show Staversion.Internal.Log.Logger
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Cabal
loadCabalFile :: FilePath -> IO (Either ErrorMsg [BuildDepends])
-- | Build target type.
data Target
-- | the library target.
TargetLibrary :: Target
-- | the executable NAME target.
TargetExecutable :: Text -> Target
-- | the test-suite NAME target.
TargetTestSuite :: Text -> Target
-- | the benchmark NAME target.
TargetBenchmark :: Text -> Target
-- | A block of build-depends:.
data BuildDepends
BuildDepends :: Target -> [PackageName] -> BuildDepends
[depsTarget] :: BuildDepends -> Target
[depsPackages] :: BuildDepends -> [PackageName]
instance GHC.Classes.Ord Staversion.Internal.Cabal.BuildDepends
instance GHC.Classes.Eq Staversion.Internal.Cabal.BuildDepends
instance GHC.Show.Show Staversion.Internal.Cabal.BuildDepends
instance GHC.Classes.Ord Staversion.Internal.Cabal.Target
instance GHC.Classes.Eq Staversion.Internal.Cabal.Target
instance GHC.Show.Show Staversion.Internal.Cabal.Target
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Result
-- | Result for a query.
data Result
Result :: ResultSource -> Query -> Either ErrorMsg ResultBody -> Result
[resultIn] :: Result -> ResultSource
[resultFor] :: Result -> Query
[resultBody] :: Result -> Either ErrorMsg ResultBody
data ResultSource
ResultSource :: PackageSource -> Maybe PackageSource -> ResultSource
-- | the PackageSource queried by user.
[resultSourceQueried] :: ResultSource -> PackageSource
-- | the real (exact) PackageSource resolved.
[resultSourceReal] :: ResultSource -> Maybe PackageSource
resultSourceDesc :: ResultSource -> Text
-- | For backward-compatibility.
type ResultBody = ResultBody' (Maybe Version)
data ResultBody' a
SimpleResultBody :: PackageName -> a -> ResultBody' a
CabalResultBody :: FilePath -> Target -> [(PackageName, a)] -> ResultBody' a
-- | Results for a query aggregated over different sources.
data AggregatedResult
AggregatedResult :: NonEmpty ResultSource -> Query -> Either ErrorMsg (ResultBody' (Maybe VersionRange)) -> AggregatedResult
[aggResultIn] :: AggregatedResult -> NonEmpty ResultSource
[aggResultFor] :: AggregatedResult -> Query
[aggResultBody] :: AggregatedResult -> Either ErrorMsg (ResultBody' (Maybe VersionRange))
-- | Create an AggregatedResult that includes just one
-- Result.
singletonResult :: Result -> AggregatedResult
instance GHC.Classes.Eq Staversion.Internal.Result.AggregatedResult
instance GHC.Show.Show Staversion.Internal.Result.AggregatedResult
instance GHC.Classes.Ord Staversion.Internal.Result.Result
instance GHC.Classes.Eq Staversion.Internal.Result.Result
instance GHC.Show.Show Staversion.Internal.Result.Result
instance GHC.Classes.Ord a => GHC.Classes.Ord (Staversion.Internal.Result.ResultBody' a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Staversion.Internal.Result.ResultBody' a)
instance GHC.Show.Show a => GHC.Show.Show (Staversion.Internal.Result.ResultBody' a)
instance GHC.Classes.Ord Staversion.Internal.Result.ResultSource
instance GHC.Classes.Eq Staversion.Internal.Result.ResultSource
instance GHC.Show.Show Staversion.Internal.Result.ResultSource
instance GHC.Base.Functor Staversion.Internal.Result.ResultBody'
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.BuildPlan.Version
-- | Parse a version text. There must not be any trailing characters after
-- a valid version text.
parseVersionText :: Text -> Maybe Version
-- | a wrapper around Version for JSON I/F
newtype VersionJSON
VersionJSON :: Version -> VersionJSON
[unVersionJSON] :: VersionJSON -> Version
instance GHC.Classes.Ord Staversion.Internal.BuildPlan.Version.VersionJSON
instance GHC.Classes.Eq Staversion.Internal.BuildPlan.Version.VersionJSON
instance GHC.Show.Show Staversion.Internal.BuildPlan.Version.VersionJSON
instance Data.Aeson.Types.FromJSON.FromJSON Staversion.Internal.BuildPlan.Version.VersionJSON
-- | This is an internal module. End-users should not use it.
--
-- This module is meant to be exposed only to
-- Staversion.Internal.BuildPlan and test modules.
module Staversion.Internal.BuildPlan.Stackage
-- | Non-ambiguous fully-resolved resolver for stackage.
data ExactResolver
-- | lts-(major).(minor)
ExactLTS :: Word -> Word -> ExactResolver
-- | nightly-(year)-(month)-(day)
ExactNightly :: Word -> Word -> Word -> ExactResolver
-- | Potentially partial resolver for stackage.
data PartialResolver
PartialExact :: ExactResolver -> PartialResolver
-- | lts (latest)
PartialLTSLatest :: PartialResolver
-- | lts-(major)
PartialLTSMajor :: Word -> PartialResolver
-- | nightly (latest)
PartialNightlyLatest :: PartialResolver
parseResolverString :: Resolver -> Maybe PartialResolver
formatResolverString :: PartialResolver -> Resolver
formatExactResolverString :: ExactResolver -> Resolver
type Disambiguator = PartialResolver -> Maybe ExactResolver
-- | Fetch the Disambiguator from the Internet.
fetchDisambiguator :: Manager -> IO (Either ErrorMsg Disambiguator)
-- | Fetch build plan YAML data from the Internet.
fetchBuildPlanYAML :: Manager -> ExactResolver -> IO ByteString
parseDisambiguator :: ByteString -> Maybe Disambiguator
instance GHC.Classes.Ord Staversion.Internal.BuildPlan.Stackage.PartialResolver
instance GHC.Classes.Eq Staversion.Internal.BuildPlan.Stackage.PartialResolver
instance GHC.Show.Show Staversion.Internal.BuildPlan.Stackage.PartialResolver
instance GHC.Classes.Ord Staversion.Internal.BuildPlan.Stackage.ExactResolver
instance GHC.Classes.Eq Staversion.Internal.BuildPlan.Stackage.ExactResolver
instance GHC.Show.Show Staversion.Internal.BuildPlan.Stackage.ExactResolver
instance Data.Aeson.Types.FromJSON.FromJSON Staversion.Internal.BuildPlan.Stackage.DisamMap
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.BuildPlan.Hackage
data RegisteredVersions
fetchPreferredVersions :: Manager -> PackageName -> IO (Either ErrorMsg RegisteredVersions)
latestVersion :: RegisteredVersions -> Maybe Version
parsePreferredVersionsJSON :: ByteString -> Either ErrorMsg RegisteredVersions
instance GHC.Classes.Ord Staversion.Internal.BuildPlan.Hackage.RegisteredVersions
instance GHC.Classes.Eq Staversion.Internal.BuildPlan.Hackage.RegisteredVersions
instance GHC.Show.Show Staversion.Internal.BuildPlan.Hackage.RegisteredVersions
instance Data.Aeson.Types.FromJSON.FromJSON Staversion.Internal.BuildPlan.Hackage.RegisteredVersions
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.BuildPlan
-- | Types that have mapping between PackageName and Version.
class HasVersions t
packageVersion :: HasVersions t => t -> PackageName -> Maybe Version
-- | A BuildPlanMap associated with its PackageSource.
data BuildPlan
buildPlanSource :: BuildPlan -> PackageSource
-- | Stateful manager for BuildPlans.
data BuildPlanManager
newBuildPlanManager :: FilePath -> Logger -> Bool -> IO BuildPlanManager
loadBuildPlan :: BuildPlanManager -> [PackageName] -> PackageSource -> IO (Either ErrorMsg BuildPlan)
-- | A data structure that keeps a map between package names and their
-- versions.
data BuildPlanMap
-- | Load a BuildPlanMap from a file.
loadBuildPlanMapYAML :: FilePath -> IO (Either ErrorMsg BuildPlanMap)
_setLTSDisambiguator :: BuildPlanManager -> Word -> Word -> IO ()
instance GHC.Base.Monoid Staversion.Internal.BuildPlan.BuildPlanMap
instance Data.Aeson.Types.FromJSON.FromJSON Staversion.Internal.BuildPlan.BuildPlanMap
instance Staversion.Internal.BuildPlan.HasVersions Staversion.Internal.BuildPlan.BuildPlanMap
instance Staversion.Internal.BuildPlan.HasVersions Staversion.Internal.BuildPlan.BuildPlan
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Aggregate
-- | Aggregate Results with the given Aggregator. It first
-- groups Results based on its resultFor field, and then
-- each group is aggregated into an AggregatedResult.
--
-- If it fails, it returns an empty list of AggregatedResult. It
-- also returns a list of LogEntrys to report warnings and errors.
aggregateResults :: Aggregator -> [Result] -> ([AggregatedResult], [LogEntry])
-- | Aggregate some Versions into a VersionRange.
type Aggregator = NonEmpty Version -> VersionRange
data VersionRange :: *
showVersionRange :: VersionRange -> String
-- | Aggregator of ORed versions.
aggOr :: Aggregator
-- | Aggregate versions to the range that the versions cover in a PVP
-- sense. This aggregator sets the upper bound to a major version, which
-- means it assumes major-version bump is not backward-compatible.
aggPvpMajor :: Aggregator
-- | Aggregate versions to the range that versions cover in a PVP sense.
-- This aggregator sets the upper bound to a minor version, which means
-- it assumes minor-version bump is not backward-compatible.
aggPvpMinor :: Aggregator
groupAllPreservingOrderBy :: (a -> a -> Bool) -> [a] -> [NonEmpty a]
-- | Aggregate one or more maps between PackageName and
-- Version.
--
-- The input Maybe Versions should all be Just.
-- Nothing version is warned and ignored. If the input versions
-- are all Nothing, the result version range is Nothing.
--
-- The PackageName lists in the input must be consistent (i.e.
-- they all must be the same list.) If not, it returns Nothing map
-- and an error is logged.
aggregatePackageVersions :: Aggregator -> NonEmpty (String, [(PackageName, Maybe Version)]) -> (Maybe [(PackageName, Maybe VersionRange)], [LogEntry])
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Format
-- | format Results like it's in build-depends in .cabal files.
formatResultsCabal :: [Result] -> Text
-- | aggregate Results and format them like it's in build-depends in
-- .cabal files.
formatResultsCabalAggregated :: Aggregator -> [Result] -> (Text, [LogEntry])
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Command
-- | Command from the user.
data Command
Command :: FilePath -> Logger -> [PackageSource] -> [Query] -> Bool -> Maybe Aggregator -> Command
-- | path to the directory where build plan files are stored.
[commBuildPlanDir] :: Command -> FilePath
-- | the logger
[commLogger] :: Command -> Logger
-- | package sources to search
[commSources] :: Command -> [PackageSource]
-- | package queries
[commQueries] :: Command -> [Query]
-- | if True, it accesses the Internet to query build plans etc.
[commAllowNetwork] :: Command -> Bool
-- | if Just, do aggregation over the results.
[commAggregator] :: Command -> Maybe Aggregator
parseCommandArgs :: IO Command
instance GHC.Classes.Ord Staversion.Internal.Command.DefCommand
instance GHC.Classes.Eq Staversion.Internal.Command.DefCommand
instance GHC.Show.Show Staversion.Internal.Command.DefCommand
-- | This is an internal module. End-users should not use it.
module Staversion.Internal.Exec
main :: IO ()
processCommand :: Command -> IO [Result]
_processCommandWithCustomBuildPlanManager :: (BuildPlanManager -> IO BuildPlanManager) -> Command -> IO [Result]
instance GHC.Classes.Ord Staversion.Internal.Exec.ResolvedQuery
instance GHC.Classes.Eq Staversion.Internal.Exec.ResolvedQuery
instance GHC.Show.Show Staversion.Internal.Exec.ResolvedQuery