diff --git a/app/ghcup/Main.hs b/app/ghcup/Main.hs index 48b326d..74e4fca 100644 --- a/app/ghcup/Main.hs +++ b/app/ghcup/Main.hs @@ -824,7 +824,7 @@ listOpts = <$> optional (option (eitherReader toolParser) - (short 't' <> long "tool" <> metavar "" <> help + (short 't' <> long "tool" <> metavar "" <> help "Tool to list versions for. Default is all" ) ) @@ -833,8 +833,8 @@ listOpts = (eitherReader criteriaParser) ( short 'c' <> long "show-criteria" - <> metavar "" - <> help "Show only installed or set tool versions" + <> metavar "" + <> help "Show only installed/set/available tool versions" ) ) <*> switch @@ -1429,6 +1429,8 @@ toolVersionEither s' = toolParser :: String -> Either String Tool toolParser s' | t == T.pack "ghc" = Right GHC | t == T.pack "cabal" = Right Cabal + | t == T.pack "hls" = Right HLS + | t == T.pack "stack" = Right Stack | otherwise = Left ("Unknown tool: " <> s') where t = T.toLower (T.pack s') @@ -1436,6 +1438,7 @@ toolParser s' | t == T.pack "ghc" = Right GHC criteriaParser :: String -> Either String ListCriteria criteriaParser s' | t == T.pack "installed" = Right ListInstalled | t == T.pack "set" = Right ListSet + | t == T.pack "available" = Right ListAvailable | otherwise = Left ("Unknown criteria: " <> s') where t = T.toLower (T.pack s') diff --git a/lib/GHCup.hs b/lib/GHCup.hs index e3c6543..3ed9f35 100644 --- a/lib/GHCup.hs +++ b/lib/GHCup.hs @@ -1335,6 +1335,7 @@ warnAboutHlsCompatibility = do -- | Filter data type for 'listVersions'. data ListCriteria = ListInstalled | ListSet + | ListAvailable deriving Show -- | A list result describes a single tool version @@ -1677,6 +1678,7 @@ listVersions lt' criteria = do Nothing -> lr Just ListInstalled -> filter (\ListResult {..} -> lInstalled) lr Just ListSet -> filter (\ListResult {..} -> lSet) lr + Just ListAvailable -> filter (\ListResult {..} -> not lNoBindist) lr