futhark-0.20.0: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageHaskell2010

Futhark.Pkg.Info

Description

Obtaining information about packages over THE INTERNET!

Synopsis

Package info

data PkgInfo m Source #

Information about a package. The name of the package is stored separately.

Constructors

PkgInfo 

Fields

lookupPkgRev :: SemVer -> PkgInfo m -> Maybe (PkgRevInfo m) Source #

Lookup information about a given version of a package.

pkgInfo :: (MonadIO m, MonadLogger m, MonadFail m) => PkgPath -> m (Either Text (PkgInfo m)) Source #

Retrieve information about a package based on its package path. This uses Semantic Import Versioning when interacting with repositories. For example, a package github.comuserrepo will match version 0.* or 1.* tags only, a package github.comuserrepo/v2 will match 2.* tags, and so forth..

data PkgRevInfo m Source #

Information about a version of a single package. The version number is stored separately.

Constructors

PkgRevInfo 

Fields

Instances

Instances details
Eq (PkgRevInfo m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Methods

(==) :: PkgRevInfo m -> PkgRevInfo m -> Bool #

(/=) :: PkgRevInfo m -> PkgRevInfo m -> Bool #

Show (PkgRevInfo m) Source # 
Instance details

Defined in Futhark.Pkg.Info

data GetManifest m Source #

The manifest is stored as a monadic action, because we want to fetch them on-demand. It would be a waste to fetch it information for every version of every package if we only actually need a small subset of them.

Instances

Instances details
Eq (GetManifest m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Show (GetManifest m) Source # 
Instance details

Defined in Futhark.Pkg.Info

downloadZipball :: (MonadLogger m, MonadIO m, MonadFail m) => PkgRevInfo m -> m Archive Source #

Download the zip archive corresponding to a specific package version.

Package registry

data PkgRegistry m Source #

A package registry is a mapping from package paths to information about the package. It is unlikely that any given registry is global; rather small registries are constructed on-demand based on the package paths referenced by the user, and may also be combined monoidically. In essence, the PkgRegistry is just a cache.

Instances

Instances details
Semigroup (PkgRegistry m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Monoid (PkgRegistry m) Source # 
Instance details

Defined in Futhark.Pkg.Info

class (MonadIO m, MonadLogger m, MonadFail m) => MonadPkgRegistry m where Source #

Monads that support a stateful package registry. These are also required to be instances of MonadIO because most package registry operations involve network operations.

Minimal complete definition

getPkgRegistry, putPkgRegistry

lookupPackage :: MonadPkgRegistry m => PkgPath -> m (PkgInfo m) Source #

Given a package path, look up information about that package.

lookupPackageRev :: MonadPkgRegistry m => PkgPath -> SemVer -> m (PkgRevInfo m) Source #

Look up information about a specific version of a package.

lookupNewestRev :: MonadPkgRegistry m => PkgPath -> m SemVer Source #

Find the newest version of a package.