| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
GHCup.Utils.Parsers
Contents
Synopsis
- data SetToolVersion
- prettyToolVer :: ToolVersion -> String
- toSetToolVer :: Maybe ToolVersion -> SetToolVersion
- platformParser :: String -> Either String PlatformRequest
- uriParser :: String -> Either String URI
- absolutePathParser :: FilePath -> Either String FilePath
- isolateParser :: FilePath -> Either String FilePath
- ghcVersionTagEither :: String -> Either String ToolVersion
- toolVersionTagEither :: String -> Either String ToolVersion
- tagEither :: String -> Either String Tag
- ghcVersionEither :: String -> Either String GHCTargetVersion
- toolVersionEither :: String -> Either String Version
- toolParser :: String -> Either String Tool
- dayParser :: String -> Either String Day
- criteriaParser :: String -> Either String ListCriteria
- keepOnParser :: String -> Either String KeepDirs
- downloaderParser :: String -> Either String Downloader
- gpgParser :: String -> Either String GPGSetting
- overWriteVersionParser :: String -> Either String [VersionPattern]
- fromVersion :: (HasLog env, MonadFail m, MonadReader env m, HasGHCupInfo env, HasDirs env, MonadThrow m, MonadIO m, MonadCatch m) => Maybe ToolVersion -> GuessMode -> Tool -> Excepts '[TagNotFound, DayNotFound, NextVerNotFound, NoToolVersionSet] m (GHCTargetVersion, Maybe VersionInfo)
- fromVersion' :: (HasLog env, MonadFail m, MonadReader env m, HasGHCupInfo env, HasDirs env, MonadThrow m, MonadIO m, MonadCatch m) => SetToolVersion -> GuessMode -> Tool -> Excepts '[TagNotFound, DayNotFound, NextVerNotFound, NoToolVersionSet] m (GHCTargetVersion, Maybe VersionInfo)
- guessFullVersion :: (HasLog env, MonadFail m, MonadReader env m, HasDirs env, MonadThrow m, MonadIO m, MonadCatch m) => GHCupDownloads -> GHCTargetVersion -> Tool -> GuessMode -> m (GHCTargetVersion, Maybe VersionInfo)
- parseUrlSource :: String -> Either String [NewURLSource]
- parseUrlSource' :: String -> Either String URLSource
- parseNewUrlSource :: String -> Either String NewURLSource
- parseNewUrlSources :: String -> Either String [NewURLSource]
- parseChannelAlias :: String -> Either String ChannelAlias
Documentation
>>>:set -XOverloadedStrings>>>:set -XDataKinds>>>:set -XTypeApplications>>>:set -XQuasiQuotes>>>import System.Directory>>>import URI.ByteString>>>import qualified Data.Text as T>>>import GHCup.Prelude>>>import GHCup.Download>>>import GHCup.Version>>>import GHCup.Errors>>>import GHCup.Types>>>import GHCup.Utils.Dirs>>>import GHCup.Types.Optics>>>import Data.Versions>>>import Optics>>>import GHCup.Prelude.Version.QQ>>>import qualified Data.Text.Encoding as E>>>import qualified Data.Map.Strict as M>>>import Control.Monad.Reader>>>import Data.Variant.Excepts>>>import Text.PrettyPrint.HughesPJClass ( prettyShow )>>>let lc = LoggerConfig { lcPrintDebug = False, consoleOutter = mempty, fileOutter = mempty, fancyColors = False }>>>dirs' <- getAllDirs>>>let installedVersions = [ ([pver|8.10.7|], "-debug+lol", Nothing), ([pver|8.10.4|], "", Nothing), ([pver|8.8.4|], "", Nothing), ([pver|8.8.3|], "", Nothing) ]>>>let settings = defaultSettings { cache = True, metaCache = 0, noNetwork = True }>>>let leanAppState = LeanAppState settings dirs' defaultKeyBindings lc>>>cwd <- getCurrentDirectory>>>(Right ref) <- pure $ GHCup.Utils.parseURI $ "file://" <> E.encodeUtf8 (T.pack cwd) <> "/data/metadata/" <> (urlBaseName . view pathL' $ ghcupURL)>>>(Right ref') <- pure $ GHCup.Utils.parseURI $ "file://" <> E.encodeUtf8 (T.pack cwd) <> "/data/metadata/" <> (urlBaseName . view pathL' $ channelURL PrereleasesChannel)>>>(VRight r) <- (fmap . fmap) _ghcupDownloads $ flip runReaderT leanAppState . runE @'[DigestError, GPGError, JSONError , DownloadFailed , FileDoesNotExistError, ContentLengthError] $ liftE (getBase ref) >>= liftE . decodeMetadata @GHCupInfo>>>(VRight r') <- (fmap . fmap) _ghcupDownloads $ flip runReaderT leanAppState . runE @'[DigestError, GPGError, JSONError , DownloadFailed , FileDoesNotExistError, ContentLengthError] $ liftE (getBase ref') >>= liftE . decodeMetadata @GHCupInfo>>>let rr = M.unionsWith (M.unionWith (\_ b2 -> b2)) [r, r']>>>let go = flip runReaderT leanAppState . fmap (tVerToText . fst)
data SetToolVersion Source #
Constructors
| SetGHCVersion GHCTargetVersion | |
| SetToolVersion Version | |
| SetToolTag Tag | |
| SetToolDay Day | |
| SetRecommended | |
| SetNext |
Instances
| Show SetToolVersion Source # | |
Defined in GHCup.Utils.Parsers Methods showsPrec :: Int -> SetToolVersion -> ShowS # show :: SetToolVersion -> String # showList :: [SetToolVersion] -> ShowS # | |
| Eq SetToolVersion Source # | |
Defined in GHCup.Utils.Parsers Methods (==) :: SetToolVersion -> SetToolVersion -> Bool # (/=) :: SetToolVersion -> SetToolVersion -> Bool # | |
prettyToolVer :: ToolVersion -> String Source #
fromVersion :: (HasLog env, MonadFail m, MonadReader env m, HasGHCupInfo env, HasDirs env, MonadThrow m, MonadIO m, MonadCatch m) => Maybe ToolVersion -> GuessMode -> Tool -> Excepts '[TagNotFound, DayNotFound, NextVerNotFound, NoToolVersionSet] m (GHCTargetVersion, Maybe VersionInfo) Source #
fromVersion' :: (HasLog env, MonadFail m, MonadReader env m, HasGHCupInfo env, HasDirs env, MonadThrow m, MonadIO m, MonadCatch m) => SetToolVersion -> GuessMode -> Tool -> Excepts '[TagNotFound, DayNotFound, NextVerNotFound, NoToolVersionSet] m (GHCTargetVersion, Maybe VersionInfo) Source #
guessFullVersion :: (HasLog env, MonadFail m, MonadReader env m, HasDirs env, MonadThrow m, MonadIO m, MonadCatch m) => GHCupDownloads -> GHCTargetVersion -> Tool -> GuessMode -> m (GHCTargetVersion, Maybe VersionInfo) Source #
Guess the full version from an input version, by possibly examining the metadata and the installed versions.
>>>go $ guessFullVersion rr (mkTVer [vver|8|]) GHC GLax"8.10.7">>>go $ guessFullVersion rr (mkTVer [vver|8.10|]) GHC GLax"8.10.7">>>go $ guessFullVersion rr (mkTVer [vver|8.10.7|]) GHC GLax"8.10.7">>>go $ guessFullVersion rr (mkTVer [vver|9.12.1|]) GHC GLax"9.12.1">>>go $ guessFullVersion rr (mkTVer [vver|8|]) GHC GStrict"8"
parseUrlSource :: String -> Either String [NewURLSource] Source #
parseNewUrlSources :: String -> Either String [NewURLSource] Source #