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 $
0 commit comments