futhark-0.25.15: An optimising compiler for a functional, array-oriented language.
Safe HaskellSafe-Inferred
LanguageGHC2021

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) => CacheDir -> PkgPath -> m (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
Show (PkgRevInfo m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Eq (PkgRevInfo m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Methods

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

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

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
Show (GetManifest m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Eq (GetManifest m) Source # 
Instance details

Defined in Futhark.Pkg.Info

data GetFiles m Source #

Get the absolute path to a package directory on disk, as well as relative paths to files that should be installed from this package. Composing the package directory and one of these paths refers to a local file (pointing into the cache) and is valid at least until the next cache operation.

Instances

Instances details
Show (GetFiles m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Methods

showsPrec :: Int -> GetFiles m -> ShowS #

show :: GetFiles m -> String #

showList :: [GetFiles m] -> ShowS #

Eq (GetFiles m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Methods

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

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

newtype CacheDir Source #

A temporary directory in which we store Git checkouts while running. This is to avoid constantly re-cloning. Will be deleted when futhark pkg terminates. In principle we could keep this around for longer, but then we would have to 'git pull' now and then also. Note that the cache is stateful - we are going to use git checkout to move around the history. It is generally not safe to have multiple operations running concurrently.

Constructors

CacheDir FilePath 

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
Monoid (PkgRegistry m) Source # 
Instance details

Defined in Futhark.Pkg.Info

Semigroup (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 => CacheDir -> PkgPath -> m (PkgInfo m) Source #

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

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

Look up information about a specific version of a package.

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

Find the newest version of a package.