Skip to content
Snippets Groups Projects
Unverified Commit e1b6cf31 authored by Lei Zhu's avatar Lei Zhu Committed by GitHub
Browse files

List all available plugins (#2139)


* List all available plugins

* Make hlint happy

Co-authored-by: default avatarJavier Neira <atreyu.bbb@gmail.com>
parent 5bd8512a
No related branches found
No related tags found
No related merge requests found
...@@ -30,6 +30,7 @@ import System.Environment ...@@ -30,6 +30,7 @@ import System.Environment
data Arguments data Arguments
= VersionMode PrintVersion = VersionMode PrintVersion
| ProbeToolsMode | ProbeToolsMode
| ListPluginsMode
| BiosMode BiosAction | BiosMode BiosAction
| Ghcide GhcideArguments | Ghcide GhcideArguments
| VSCodeExtensionSchemaMode | VSCodeExtensionSchemaMode
...@@ -64,6 +65,7 @@ getArguments exeName plugins = execParser opts ...@@ -64,6 +65,7 @@ getArguments exeName plugins = execParser opts
opts = info (( opts = info ((
VersionMode <$> printVersionParser exeName VersionMode <$> printVersionParser exeName
<|> probeToolsParser exeName <|> probeToolsParser exeName
<|> listPluginsParser
<|> BiosMode <$> biosParser <|> BiosMode <$> biosParser
<|> Ghcide <$> arguments plugins <|> Ghcide <$> arguments plugins
) )
...@@ -90,6 +92,11 @@ probeToolsParser exeName = ...@@ -90,6 +92,11 @@ probeToolsParser exeName =
flag' ProbeToolsMode flag' ProbeToolsMode
(long "probe-tools" <> help ("Show " ++ exeName ++ " version and other tools of interest")) (long "probe-tools" <> help ("Show " ++ exeName ++ " version and other tools of interest"))
listPluginsParser :: Parser Arguments
listPluginsParser =
flag' ListPluginsMode
(long "list-plugins" <> help "List all avaliable plugins")
arguments :: IdePlugins IdeState -> Parser GhcideArguments arguments :: IdePlugins IdeState -> Parser GhcideArguments
arguments plugins = GhcideArguments arguments plugins = GhcideArguments
<$> (commandP plugins <|> lspCommand <|> checkCommand) <$> (commandP plugins <|> lspCommand <|> checkCommand)
......
...@@ -13,6 +13,7 @@ import Control.Monad.Extra ...@@ -13,6 +13,7 @@ import Control.Monad.Extra
import qualified Data.Aeson.Encode.Pretty as A import qualified Data.Aeson.Encode.Pretty as A
import qualified Data.ByteString.Lazy.Char8 as LBS import qualified Data.ByteString.Lazy.Char8 as LBS
import Data.Default import Data.Default
import Data.List (sort)
import qualified Data.Text as T import qualified Data.Text as T
import Development.IDE.Core.Rules import Development.IDE.Core.Rules
import Development.IDE.Graph (ShakeOptions (shakeThreads)) import Development.IDE.Graph (ShakeOptions (shakeThreads))
...@@ -25,7 +26,8 @@ import Ide.Arguments ...@@ -25,7 +26,8 @@ import Ide.Arguments
import Ide.Logger import Ide.Logger
import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig, import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig,
pluginsToVSCodeExtensionSchema) pluginsToVSCodeExtensionSchema)
import Ide.Types (IdePlugins, ipMap) import Ide.Types (IdePlugins, PluginId (PluginId),
ipMap)
import Ide.Version import Ide.Version
import qualified Language.LSP.Server as LSP import qualified Language.LSP.Server as LSP
import qualified System.Directory.Extra as IO import qualified System.Directory.Extra as IO
...@@ -51,6 +53,12 @@ defaultMain args idePlugins = do ...@@ -51,6 +53,12 @@ defaultMain args idePlugins = do
VersionMode PrintNumericVersion -> VersionMode PrintNumericVersion ->
putStrLn haskellLanguageServerNumericVersion putStrLn haskellLanguageServerNumericVersion
ListPluginsMode -> do
let pluginNames = sort
$ map ((\(PluginId t) -> T.unpack t) . fst)
$ ipMap idePlugins
mapM_ putStrLn pluginNames
BiosMode PrintCradleType -> do BiosMode PrintCradleType -> do
dir <- IO.getCurrentDirectory dir <- IO.getCurrentDirectory
hieYaml <- Session.findCradle def dir hieYaml <- Session.findCradle def dir
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment