| Copyright | (c) Julian Ospald 2020 |
|---|---|
| License | LGPL-3.0 |
| Maintainer | hasufell@hasufell.de |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
GHCup
Description
This module contains the main functions that correspond to the command line interface, like installation, listing versions and so on.
These are the entry points.
Synopsis
- fetchToolBindist :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) => Version -> Tool -> Maybe FilePath -> Excepts '[DigestError, GPGError, DownloadFailed, NoDownload] m FilePath
- fetchGHCSrc :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) => Version -> Maybe FilePath -> Excepts '[DigestError, GPGError, DownloadFailed, NoDownload] m FilePath
- installGHCBindist :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) => DownloadInfo -> Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, BuildFailed, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, DirNotEmpty, ArchiveResult, ProcessError] m ()
- installPackedGHC :: (MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasPlatformReq env, HasSettings env, MonadThrow m, HasLog env, MonadIO m, MonadUnliftIO m, MonadFail m) => FilePath -> Maybe TarDir -> FilePath -> Version -> Bool -> Excepts '[BuildFailed, UnknownArchive, TarDirDoesNotExist, DirNotEmpty, ArchiveResult, ProcessError] m ()
- installUnpackedGHC :: (MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, MonadThrow m, HasLog env, MonadIO m, MonadUnliftIO m, MonadMask m) => FilePath -> FilePath -> Version -> Excepts '[ProcessError] m ()
- installGHCBin :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasGHCupInfo env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) => Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, BuildFailed, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, DirNotEmpty, ArchiveResult, ProcessError] m ()
- installCabalBindist :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => DownloadInfo -> Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m ()
- installCabalUnpacked :: (MonadCatch m, HasLog env, MonadIO m, MonadReader env m) => FilePath -> FilePath -> Maybe Version -> Bool -> Excepts '[CopyError, FileAlreadyExistsError] m ()
- installCabalBin :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasGHCupInfo env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m ()
- installHLSBindist :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => DownloadInfo -> Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m ()
- installHLSUnpacked :: (MonadReader env m, MonadFail m, HasLog env, MonadCatch m, MonadIO m) => FilePath -> FilePath -> Maybe Version -> Bool -> Excepts '[CopyError, FileAlreadyExistsError] m ()
- installHLSPostInst :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadCatch m, MonadMask m, MonadFail m, MonadUnliftIO m) => Maybe FilePath -> Version -> Excepts '[NotInstalled] m ()
- installHLSBin :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasGHCupInfo env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m ()
- compileHLS :: (MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Either Version GitBranch -> [Version] -> Maybe Int -> Maybe Version -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Excepts '[NoDownload, GPGError, DownloadFailed, DigestError, UnknownArchive, TarDirDoesNotExist, ArchiveResult, BuildFailed, NotInstalled] m Version
- installStackBin :: (MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m ()
- installStackBindist :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => DownloadInfo -> Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m ()
- installStackUnpacked :: (MonadReader env m, HasLog env, MonadCatch m, MonadIO m) => FilePath -> FilePath -> Maybe Version -> Bool -> Excepts '[CopyError, FileAlreadyExistsError] m ()
- setGHC :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadCatch m, MonadMask m, MonadUnliftIO m) => GHCTargetVersion -> SetGHC -> Excepts '[NotInstalled] m GHCTargetVersion
- unsetGHC :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadMask m) => Maybe Text -> Excepts '[NotInstalled] m ()
- setCabal :: (MonadMask m, MonadReader env m, HasDirs env, HasLog env, MonadFail m, MonadIO m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m ()
- unsetCabal :: (MonadMask m, MonadReader env m, HasDirs env, MonadIO m) => m ()
- setHLS :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadMask m, MonadFail m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m ()
- unsetHLS :: (MonadMask m, MonadReader env m, HasDirs env, MonadIO m) => m ()
- setStack :: (MonadMask m, MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m ()
- unsetStack :: (MonadMask m, MonadReader env m, HasDirs env, MonadIO m) => m ()
- warnAboutHlsCompatibility :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadCatch m, MonadIO m) => m ()
- data ListCriteria
- data ListResult = ListResult {}
- availableToolVersions :: GHCupDownloads -> Tool -> Map Version VersionInfo
- listVersions :: (MonadCatch m, HasLog env, MonadThrow m, HasLog env, MonadIO m, MonadReader env m, HasDirs env, HasPlatformReq env, HasGHCupInfo env) => Maybe Tool -> Maybe ListCriteria -> m [ListResult]
- rmGHCVer :: (MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadMask m, MonadUnliftIO m) => GHCTargetVersion -> Excepts '[NotInstalled] m ()
- rmCabalVer :: (MonadMask m, MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m ()
- rmHLSVer :: (MonadMask m, MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m ()
- rmStackVer :: (MonadMask m, MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m ()
- rmGhcup :: (MonadReader env m, HasDirs env, MonadIO m, MonadCatch m, HasLog env, MonadMask m, MonadUnliftIO m) => m ()
- rmTool :: (MonadReader env m, HasDirs env, HasLog env, MonadFail m, MonadMask m, MonadUnliftIO m) => ListResult -> Excepts '[NotInstalled] m ()
- rmGhcupDirs :: (MonadReader env m, HasDirs env, MonadIO m, HasLog env, MonadCatch m, MonadMask m) => m [FilePath]
- getDebugInfo :: (Alternative m, MonadFail m, MonadReader env m, HasDirs env, HasLog env, MonadCatch m, MonadIO m) => Excepts '[NoCompatiblePlatform, NoCompatibleArch, DistroNotFound] m DebugInfo
- compileGHC :: (MonadMask m, MonadReader env m, HasDirs env, HasPlatformReq env, HasGHCupInfo env, HasSettings env, MonadThrow m, MonadResource m, HasLog env, MonadIO m, MonadUnliftIO m, MonadFail m) => Either GHCTargetVersion GitBranch -> Maybe Version -> Either Version FilePath -> Maybe Int -> Maybe FilePath -> Maybe FilePath -> [Text] -> Maybe String -> Bool -> Maybe FilePath -> Excepts '[AlreadyInstalled, BuildFailed, DigestError, GPGError, DownloadFailed, GHCupSetError, NoDownload, NotFoundInPATH, PatchFailed, UnknownArchive, TarDirDoesNotExist, NotInstalled, DirNotEmpty, ArchiveResult, FileDoesNotExistError, HadrianNotFound, InvalidBuildConfig, ProcessError, CopyError, BuildFailed] m GHCTargetVersion
- upgradeGHCup :: (MonadMask m, MonadReader env m, HasDirs env, HasPlatformReq env, HasGHCupInfo env, HasSettings env, MonadCatch m, HasLog env, MonadThrow m, MonadFail m, MonadResource m, MonadIO m, MonadUnliftIO m) => Maybe FilePath -> Bool -> Excepts '[CopyError, DigestError, GPGError, GPGError, DownloadFailed, NoDownload, NoUpdate] m Version
- postGHCInstall :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadCatch m, MonadMask m, MonadUnliftIO m) => GHCTargetVersion -> Excepts '[NotInstalled] m ()
- whereIsTool :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadCatch m, MonadMask m, MonadUnliftIO m) => Tool -> GHCTargetVersion -> Excepts '[NotInstalled] m FilePath
- checkIfToolInstalled :: (MonadIO m, MonadReader env m, HasDirs env, MonadCatch m) => Tool -> Version -> m Bool
- throwIfFileAlreadyExists :: MonadIO m => FilePath -> Excepts '[FileAlreadyExistsError] m ()
- rmOldGHC :: (MonadReader env m, HasGHCupInfo env, HasDirs env, HasLog env, MonadIO m, MonadFail m, MonadMask m, MonadUnliftIO m) => Excepts '[NotInstalled] m ()
- rmProfilingLibs :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadFail m, MonadMask m, MonadUnliftIO m) => m ()
- rmShareDir :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadFail m, MonadMask m, MonadUnliftIO m) => m ()
- rmHLSNoGHC :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadMask m) => m ()
- rmCache :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadMask m) => m ()
- rmTmp :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadMask m) => m ()
Documentation
fetchToolBindist :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) => Version -> Tool -> Maybe FilePath -> Excepts '[DigestError, GPGError, DownloadFailed, NoDownload] m FilePath Source #
fetchGHCSrc :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) => Version -> Maybe FilePath -> Excepts '[DigestError, GPGError, DownloadFailed, NoDownload] m FilePath Source #
Arguments
| :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) | |
| => DownloadInfo | where/how to download |
| -> Version | the version to install |
| -> Maybe FilePath | isolated filepath if user passed any |
| -> Bool | Force install |
| -> Excepts '[AlreadyInstalled, BuildFailed, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, DirNotEmpty, ArchiveResult, ProcessError] m () |
Like installGHCBin, except takes the DownloadInfo as
argument instead of looking it up from GHCupDownloads.
Arguments
| :: (MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasPlatformReq env, HasSettings env, MonadThrow m, HasLog env, MonadIO m, MonadUnliftIO m, MonadFail m) | |
| => FilePath | Path to the packed GHC bindist |
| -> Maybe TarDir | Subdir of the archive |
| -> FilePath | Path to install to |
| -> Version | The GHC version |
| -> Bool | Force install |
| -> Excepts '[BuildFailed, UnknownArchive, TarDirDoesNotExist, DirNotEmpty, ArchiveResult, ProcessError] m () |
Install a packed GHC distribution. This only deals with unpacking and the GHC build system and nothing else.
Arguments
| :: (MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, MonadThrow m, HasLog env, MonadIO m, MonadUnliftIO m, MonadMask m) | |
| => FilePath | Path to the unpacked GHC bindist (where the configure script resides) |
| -> FilePath | Path to install to |
| -> Version | The GHC version |
| -> Excepts '[ProcessError] m () |
Install an unpacked GHC distribution. This only deals with the GHC build system and nothing else.
Arguments
| :: (MonadFail m, MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasGHCupInfo env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m) | |
| => Version | the version to install |
| -> Maybe FilePath | isolated install filepath, if user passed any |
| -> Bool | force install |
| -> Excepts '[AlreadyInstalled, BuildFailed, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, DirNotEmpty, ArchiveResult, ProcessError] m () |
Installs GHC into ~/.ghcup/ghc/<ver> and places the
following symlinks in ~/.ghcup/bin:
ghc-x.y.z -> ../ghc/x.y.z/bin/ghc
ghc-x.y -> ../ghc/x.y.z/bin/ghc(if x.y.z is the latest x.y version)
Arguments
| :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) | |
| => DownloadInfo | |
| -> Version | |
| -> Maybe FilePath | isolated install filepath, if user provides any. |
| -> Bool | Force install |
| -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m () |
Like installCabalBin, except takes the DownloadInfo as
argument instead of looking it up from GHCupDownloads.
Arguments
| :: (MonadCatch m, HasLog env, MonadIO m, MonadReader env m) | |
| => FilePath | Path to the unpacked cabal bindist (where the executable resides) |
| -> FilePath | Path to install to |
| -> Maybe Version | Nothing for isolated install |
| -> Bool | Force Install |
| -> Excepts '[CopyError, FileAlreadyExistsError] m () |
Install an unpacked cabal distribution.Symbol
installCabalBin :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasGHCupInfo env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m () Source #
Installs cabal into ~/.ghcup/bin/cabal-<ver> and
creates a default cabal -> cabal-x.y.z.q symlink for
the latest installed version.
Arguments
| :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) | |
| => DownloadInfo | |
| -> Version | |
| -> Maybe FilePath | isolated install path, if user passed any |
| -> Bool | Force install |
| -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m () |
Like 'installHLSBin, except takes the DownloadInfo as
argument instead of looking it up from GHCupDownloads.
Arguments
| :: (MonadReader env m, MonadFail m, HasLog env, MonadCatch m, MonadIO m) | |
| => FilePath | Path to the unpacked hls bindist (where the executable resides) |
| -> FilePath | Path to install to |
| -> Maybe Version | Nothing for isolated install |
| -> Bool | is it a force install |
| -> Excepts '[CopyError, FileAlreadyExistsError] m () |
Install an unpacked hls distribution.
installHLSPostInst :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadCatch m, MonadMask m, MonadFail m, MonadUnliftIO m) => Maybe FilePath -> Version -> Excepts '[NotInstalled] m () Source #
installHLSBin :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasGHCupInfo env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Version -> Maybe FilePath -> Bool -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m () Source #
Installs hls binaries haskell-language-server-<ghcver>
into ~/.ghcup/bin/, as well as haskell-languager-server-wrapper.
compileHLS :: (MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) => Either Version GitBranch -> [Version] -> Maybe Int -> Maybe Version -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> Excepts '[NoDownload, GPGError, DownloadFailed, DigestError, UnknownArchive, TarDirDoesNotExist, ArchiveResult, BuildFailed, NotInstalled] m Version Source #
Arguments
| :: (MonadMask m, MonadCatch m, MonadReader env m, HasDirs env, HasSettings env, HasPlatformReq env, HasGHCupInfo env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) | |
| => Version | |
| -> Maybe FilePath | isolate install Dir (if any) |
| -> Bool | Force install |
| -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m () |
Installs stack into ~/.ghcup/bin/stack-<ver> and
creates a default stack -> stack-x.y.z.q symlink for
the latest installed version.
Arguments
| :: (MonadMask m, MonadCatch m, MonadReader env m, HasPlatformReq env, HasDirs env, HasSettings env, HasLog env, MonadResource m, MonadIO m, MonadUnliftIO m, MonadFail m) | |
| => DownloadInfo | |
| -> Version | |
| -> Maybe FilePath | isolate install Dir (if any) |
| -> Bool | Force install |
| -> Excepts '[AlreadyInstalled, CopyError, DigestError, GPGError, DownloadFailed, NoDownload, NotInstalled, UnknownArchive, TarDirDoesNotExist, ArchiveResult, FileAlreadyExistsError] m () |
Like installStackBin, except takes the DownloadInfo as
argument instead of looking it up from GHCupDownloads.
Arguments
| :: (MonadReader env m, HasLog env, MonadCatch m, MonadIO m) | |
| => FilePath | Path to the unpacked stack bindist (where the executable resides) |
| -> FilePath | Path to install to |
| -> Maybe Version | Nothing for isolated installs |
| -> Bool | Force install |
| -> Excepts '[CopyError, FileAlreadyExistsError] m () |
Install an unpacked stack distribution.
setGHC :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadCatch m, MonadMask m, MonadUnliftIO m) => GHCTargetVersion -> SetGHC -> Excepts '[NotInstalled] m GHCTargetVersion Source #
Set GHC symlinks in ~/.ghcup/bin for the requested GHC version. The behavior depends
on SetGHC:
- SetGHCOnly:
~/.ghcup/bin/ghc -> ~/.ghcup/ghc/<ver>/bin/ghc - SetGHC_XY:
~/.ghcup/bin/ghc-X.Y -> ~/.ghcup/ghc/<ver>/bin/ghc - SetGHC_XYZ:
~/.ghcup/bin/ghc-<ver> -> ~/.ghcup/ghc/<ver>/bin/ghc
Additionally creates a ~/.ghcup/share -> ~/.ghcup/ghc/<ver>/share symlink
for SetGHCOnly constructor.
unsetGHC :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadMask m) => Maybe Text -> Excepts '[NotInstalled] m () Source #
setCabal :: (MonadMask m, MonadReader env m, HasDirs env, HasLog env, MonadFail m, MonadIO m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m () Source #
Set the ~/.ghcup/bin/cabal symlink.
unsetCabal :: (MonadMask m, MonadReader env m, HasDirs env, MonadIO m) => m () Source #
setHLS :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadMask m, MonadFail m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m () Source #
Set the haskell-language-server symlinks.
setStack :: (MonadMask m, MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m () Source #
Set the ~/.ghcup/bin/stack symlink.
unsetStack :: (MonadMask m, MonadReader env m, HasDirs env, MonadIO m) => m () Source #
warnAboutHlsCompatibility :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadCatch m, MonadIO m) => m () Source #
Warn if the installed and set HLS is not compatible with the installed and set GHC version.
data ListCriteria Source #
Filter data type for listVersions.
Constructors
| ListInstalled | |
| ListSet | |
| ListAvailable |
Instances
| Show ListCriteria Source # | |
Defined in GHCup Methods showsPrec :: Int -> ListCriteria -> ShowS # show :: ListCriteria -> String # showList :: [ListCriteria] -> ShowS # | |
data ListResult Source #
A list result describes a single tool version and various of its properties.
Constructors
| ListResult | |
Fields
| |
Instances
| Eq ListResult Source # | |
Defined in GHCup | |
| Ord ListResult Source # | |
Defined in GHCup Methods compare :: ListResult -> ListResult -> Ordering # (<) :: ListResult -> ListResult -> Bool # (<=) :: ListResult -> ListResult -> Bool # (>) :: ListResult -> ListResult -> Bool # (>=) :: ListResult -> ListResult -> Bool # max :: ListResult -> ListResult -> ListResult # min :: ListResult -> ListResult -> ListResult # | |
| Show ListResult Source # | |
Defined in GHCup Methods showsPrec :: Int -> ListResult -> ShowS # show :: ListResult -> String # showList :: [ListResult] -> ShowS # | |
availableToolVersions :: GHCupDownloads -> Tool -> Map Version VersionInfo Source #
Extract all available tool versions and their tags.
listVersions :: (MonadCatch m, HasLog env, MonadThrow m, HasLog env, MonadIO m, MonadReader env m, HasDirs env, HasPlatformReq env, HasGHCupInfo env) => Maybe Tool -> Maybe ListCriteria -> m [ListResult] Source #
List all versions from the download info, as well as stray versions.
rmGHCVer :: (MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadMask m, MonadUnliftIO m) => GHCTargetVersion -> Excepts '[NotInstalled] m () Source #
Delete a ghc version and all its symlinks.
This may leave GHCup without a "set" version. Will try to fix the ghc-x.y symlink after removal (e.g. to an older version).
rmCabalVer :: (MonadMask m, MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m () Source #
Delete a cabal version. Will try to fix the cabal symlink
after removal (e.g. setting it to an older version).
rmHLSVer :: (MonadMask m, MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m () Source #
Delete a hls version. Will try to fix the hls symlinks after removal (e.g. setting it to an older version).
rmStackVer :: (MonadMask m, MonadReader env m, HasDirs env, MonadThrow m, HasLog env, MonadIO m, MonadFail m, MonadCatch m, MonadUnliftIO m) => Version -> Excepts '[NotInstalled] m () Source #
Delete a stack version. Will try to fix the stack symlink
after removal (e.g. setting it to an older version).
rmGhcup :: (MonadReader env m, HasDirs env, MonadIO m, MonadCatch m, HasLog env, MonadMask m, MonadUnliftIO m) => m () Source #
rmTool :: (MonadReader env m, HasDirs env, HasLog env, MonadFail m, MonadMask m, MonadUnliftIO m) => ListResult -> Excepts '[NotInstalled] m () Source #
rmGhcupDirs :: (MonadReader env m, HasDirs env, MonadIO m, HasLog env, MonadCatch m, MonadMask m) => m [FilePath] Source #
getDebugInfo :: (Alternative m, MonadFail m, MonadReader env m, HasDirs env, HasLog env, MonadCatch m, MonadIO m) => Excepts '[NoCompatiblePlatform, NoCompatibleArch, DistroNotFound] m DebugInfo Source #
Arguments
| :: (MonadMask m, MonadReader env m, HasDirs env, HasPlatformReq env, HasGHCupInfo env, HasSettings env, MonadThrow m, MonadResource m, HasLog env, MonadIO m, MonadUnliftIO m, MonadFail m) | |
| => Either GHCTargetVersion GitBranch | version to install |
| -> Maybe Version | overwrite version |
| -> Either Version FilePath | version to bootstrap with |
| -> Maybe Int | jobs |
| -> Maybe FilePath | build config |
| -> Maybe FilePath | patch directory |
| -> [Text] | additional args to ./configure |
| -> Maybe String | build flavour |
| -> Bool | |
| -> Maybe FilePath | isolate dir |
| -> Excepts '[AlreadyInstalled, BuildFailed, DigestError, GPGError, DownloadFailed, GHCupSetError, NoDownload, NotFoundInPATH, PatchFailed, UnknownArchive, TarDirDoesNotExist, NotInstalled, DirNotEmpty, ArchiveResult, FileDoesNotExistError, HadrianNotFound, InvalidBuildConfig, ProcessError, CopyError, BuildFailed] m GHCTargetVersion |
Compile a GHC from source. This behaves wrt symlinks and installation
the same as installGHCBin.
Arguments
| :: (MonadMask m, MonadReader env m, HasDirs env, HasPlatformReq env, HasGHCupInfo env, HasSettings env, MonadCatch m, HasLog env, MonadThrow m, MonadFail m, MonadResource m, MonadIO m, MonadUnliftIO m) | |
| => Maybe FilePath | full file destination to write ghcup into |
| -> Bool | whether to force update regardless of currently installed version |
| -> Excepts '[CopyError, DigestError, GPGError, GPGError, DownloadFailed, NoDownload, NoUpdate] m Version |
Upgrade ghcup and place it in ~/.ghcup/bin/ghcup,
if no path is provided.
postGHCInstall :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadCatch m, MonadMask m, MonadUnliftIO m) => GHCTargetVersion -> Excepts '[NotInstalled] m () Source #
Creates ghc-x.y.z and ghc-x.y symlinks. This is used for
both installing from source and bindist.
whereIsTool :: (MonadReader env m, HasDirs env, HasLog env, MonadThrow m, MonadFail m, MonadIO m, MonadCatch m, MonadMask m, MonadUnliftIO m) => Tool -> GHCTargetVersion -> Excepts '[NotInstalled] m FilePath Source #
Reports the binary location of a given tool:
- for GHC, this reports:
~/.ghcup/ghc/<ver>/bin/ghc - for cabal, this reports
~/.ghcup/bin/cabal-<ver> - for hls, this reports
~/.ghcup/bin/haskell-language-server-wrapper-<ver> - for stack, this reports
~/.ghcup/bin/stack-<ver> - for ghcup, this reports the location of the currently running executable
checkIfToolInstalled :: (MonadIO m, MonadReader env m, HasDirs env, MonadCatch m) => Tool -> Version -> m Bool Source #
Doesn't work for cross GHC.
throwIfFileAlreadyExists :: MonadIO m => FilePath -> Excepts '[FileAlreadyExistsError] m () Source #
rmOldGHC :: (MonadReader env m, HasGHCupInfo env, HasDirs env, HasLog env, MonadIO m, MonadFail m, MonadMask m, MonadUnliftIO m) => Excepts '[NotInstalled] m () Source #
rmProfilingLibs :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadFail m, MonadMask m, MonadUnliftIO m) => m () Source #
rmShareDir :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadFail m, MonadMask m, MonadUnliftIO m) => m () Source #
rmHLSNoGHC :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m, MonadMask m) => m () Source #