-- 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