1
1
-- Copyright (c) 2019 The DAML Authors. All rights reserved.
2
2
-- SPDX-License-Identifier: Apache-2.0
3
3
{-# OPTIONS_GHC -Wno-dodgy-imports #-} -- GHC no longer exports def in GHC 8.6 and above
4
+ {-# LANGUAGE CPP #-} -- To get precise GHC version
4
5
5
6
module Main (main ) where
6
7
@@ -29,12 +30,13 @@ import qualified Data.Text as T
29
30
import qualified Data.Text.IO as T
30
31
import Language.Haskell.LSP.Messages
31
32
import Linker
32
- import System.Info
33
33
import Data.Version
34
34
import Development.IDE.LSP.LanguageServer
35
35
import System.Directory.Extra as IO
36
36
import System.Environment
37
37
import System.IO
38
+ import System.Exit
39
+ import Paths_ghcide
38
40
import Development.Shake hiding (Env )
39
41
import qualified Data.Set as Set
40
42
@@ -47,13 +49,19 @@ import HIE.Bios
47
49
getLibdir :: IO FilePath
48
50
getLibdir = fromMaybe GHC.Paths. libdir <$> lookupEnv " NIX_GHC_LIBDIR"
49
51
52
+ ghcideVersion :: String
53
+ ghcideVersion = " ghcide version: " <> showVersion version
54
+ <> " (GHC: " <> VERSION_ghc <> " )"
55
+
50
56
main :: IO ()
51
57
main = do
52
58
-- WARNING: If you write to stdout before runLanguageServer
53
59
-- then the language server will not work
54
- hPutStrLn stderr $ " Starting ghcide (GHC v" ++ showVersion compilerVersion ++ " )"
55
60
Arguments {.. } <- getArguments
56
61
62
+ if argsVersion then putStrLn ghcideVersion >> exitSuccess
63
+ else hPutStrLn stderr {- see WARNING above -} ghcideVersion
64
+
57
65
-- lock to avoid overlapping output on stdout
58
66
lock <- newLock
59
67
let logger = Logger $ \ pri msg -> withLock lock $
0 commit comments