on master help sign in
Add --version CLI option (#106)

* Add --version CLI option * Extract ghcide version from cabal * Extract precise GHC version from cabal preprocessor macro

commitc24ef1c288de0df38329be68c91ad52198c8d1e9 authorJacek Generowicz <jacg@my-post-office.net> dateMon 23 Sep 2019, 08:50 (7 years ago) parentcec3159
2 files changed+12−2
exe/Arguments.hs+2 exe/Main.hs+10−2
exe/Arguments.hs+2
@@ -10,6 +10,7 @@ data Arguments = Arguments
1010 {argLSP :: Bool
1111 ,argsCwd :: Maybe FilePath
1212 ,argFiles :: [FilePath]
13+ ,argsVersion :: Bool
1314 }
1415
1516getArguments :: IO Arguments
@@ -25,3 +26,4 @@ arguments = Arguments
2526 <$> switch (long "lsp" <> help "Start talking to an LSP server")
2627 <*> optional (strOption $ long "cwd" <> metavar "DIR" <> help "Change to this directory")
2728 <*> many (argument str (metavar "FILES/DIRS..."))
29+ <*> switch (long "version" <> help "Show ghcide and GHC versions")
exe/Main.hs+10−2
@@ -1,6 +1,7 @@
11-- Copyright (c) 2019 The DAML Authors. All rights reserved.
22-- SPDX-License-Identifier: Apache-2.0
33{-# OPTIONS_GHC -Wno-dodgy-imports #-} -- GHC no longer exports def in GHC 8.6 and above
4+{-# LANGUAGE CPP #-} -- To get precise GHC version
45
56module Main(main) where
67
@@ -29,12 +30,13 @@ import qualified Data.Text as T
2930import qualified Data.Text.IO as T
3031import Language.Haskell.LSP.Messages
3132import Linker
32−import System.Info
3333import Data.Version
3434import Development.IDE.LSP.LanguageServer
3535import System.Directory.Extra as IO
3636import System.Environment
3737import System.IO
38+import System.Exit
39+import Paths_ghcide
3840import Development.Shake hiding (Env)
3941import qualified Data.Set as Set
4042
@@ -47,13 +49,19 @@ import HIE.Bios
4749getLibdir :: IO FilePath
4850getLibdir = fromMaybe GHC.Paths.libdir <$> lookupEnv "NIX_GHC_LIBDIR"
4951
52+ghcideVersion :: String
53+ghcideVersion = "ghcide version: " <> showVersion version
54+ <> " (GHC: " <> VERSION_ghc <> ")"
55+
5056main :: IO ()
5157main = do
5258 -- WARNING: If you write to stdout before runLanguageServer
5359 -- then the language server will not work
54− hPutStrLn stderr $ "Starting ghcide (GHC v" ++ showVersion compilerVersion ++ ")"
5560 Arguments{..} <- getArguments
5661
62+ if argsVersion then putStrLn ghcideVersion >> exitSuccess
63+ else hPutStrLn stderr {- see WARNING above -} ghcideVersion
64+
5765 -- lock to avoid overlapping output on stdout
5866 lock <- newLock
5967 let logger = Logger $ \pri msg -> withLock lock $