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
4
{-# LANGUAGE CPP #-} -- To get precise GHC version
5
+ {-# LANGUAGE TemplateHaskell #-}
5
6
6
7
module Main (main ) where
7
8
@@ -39,6 +40,7 @@ import System.Environment
39
40
import System.IO
40
41
import System.Exit
41
42
import Paths_ghcide
43
+ import Development.GitRev
42
44
import Development.Shake (Action , action )
43
45
import qualified Data.Set as Set
44
46
import qualified Data.Map.Strict as Map
@@ -52,18 +54,25 @@ import HIE.Bios
52
54
getLibdir :: IO FilePath
53
55
getLibdir = fromMaybe GHC.Paths. libdir <$> lookupEnv " NIX_GHC_LIBDIR"
54
56
55
- ghcideVersion :: String
56
- ghcideVersion = " ghcide version: " <> showVersion version
57
- <> " (GHC: " <> VERSION_ghc <> " )"
57
+ ghcideVersion :: IO String
58
+ ghcideVersion = do
59
+ path <- getExecutablePath
60
+ let gitHashSection = case $ (gitHash) of
61
+ x | x == " UNKNOWN" -> " "
62
+ x -> " (GIT hash: " <> x <> " )"
63
+ return $ " ghcide version: " <> showVersion version
64
+ <> " (GHC: " <> VERSION_ghc
65
+ <> " ) (PATH: " <> path <> " )"
66
+ <> gitHashSection
58
67
59
68
main :: IO ()
60
69
main = do
61
70
-- WARNING: If you write to stdout before runLanguageServer
62
71
-- then the language server will not work
63
72
Arguments {.. } <- getArguments
64
73
65
- if argsVersion then putStrLn ghcideVersion >> exitSuccess
66
- else hPutStrLn stderr {- see WARNING above -} ghcideVersion
74
+ if argsVersion then ghcideVersion >>= putStrLn >> exitSuccess
75
+ else hPutStrLn stderr {- see WARNING above -} =<< ghcideVersion
67
76
68
77
-- lock to avoid overlapping output on stdout
69
78
lock <- newLock
0 commit comments