Skip to content

Commit e1b6cf3

Browse files
July541jneira
andauthored
List all available plugins (#2139)
* List all available plugins * Make hlint happy Co-authored-by: Javier Neira <atreyu.bbb@gmail.com>
1 parent 5bd8512 commit e1b6cf3

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/Ide/Arguments.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import System.Environment
3030
data Arguments
3131
= VersionMode PrintVersion
3232
| ProbeToolsMode
33+
| ListPluginsMode
3334
| BiosMode BiosAction
3435
| Ghcide GhcideArguments
3536
| VSCodeExtensionSchemaMode
@@ -64,6 +65,7 @@ getArguments exeName plugins = execParser opts
6465
opts = info ((
6566
VersionMode <$> printVersionParser exeName
6667
<|> probeToolsParser exeName
68+
<|> listPluginsParser
6769
<|> BiosMode <$> biosParser
6870
<|> Ghcide <$> arguments plugins
6971
)
@@ -90,6 +92,11 @@ probeToolsParser exeName =
9092
flag' ProbeToolsMode
9193
(long "probe-tools" <> help ("Show " ++ exeName ++ " version and other tools of interest"))
9294

95+
listPluginsParser :: Parser Arguments
96+
listPluginsParser =
97+
flag' ListPluginsMode
98+
(long "list-plugins" <> help "List all avaliable plugins")
99+
93100
arguments :: IdePlugins IdeState -> Parser GhcideArguments
94101
arguments plugins = GhcideArguments
95102
<$> (commandP plugins <|> lspCommand <|> checkCommand)

src/Ide/Main.hs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Control.Monad.Extra
1313
import qualified Data.Aeson.Encode.Pretty as A
1414
import qualified Data.ByteString.Lazy.Char8 as LBS
1515
import Data.Default
16+
import Data.List (sort)
1617
import qualified Data.Text as T
1718
import Development.IDE.Core.Rules
1819
import Development.IDE.Graph (ShakeOptions (shakeThreads))
@@ -25,7 +26,8 @@ import Ide.Arguments
2526
import Ide.Logger
2627
import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig,
2728
pluginsToVSCodeExtensionSchema)
28-
import Ide.Types (IdePlugins, ipMap)
29+
import Ide.Types (IdePlugins, PluginId (PluginId),
30+
ipMap)
2931
import Ide.Version
3032
import qualified Language.LSP.Server as LSP
3133
import qualified System.Directory.Extra as IO
@@ -51,6 +53,12 @@ defaultMain args idePlugins = do
5153
VersionMode PrintNumericVersion ->
5254
putStrLn haskellLanguageServerNumericVersion
5355

56+
ListPluginsMode -> do
57+
let pluginNames = sort
58+
$ map ((\(PluginId t) -> T.unpack t) . fst)
59+
$ ipMap idePlugins
60+
mapM_ putStrLn pluginNames
61+
5462
BiosMode PrintCradleType -> do
5563
dir <- IO.getCurrentDirectory
5664
hieYaml <- Session.findCradle def dir

0 commit comments

Comments
 (0)