core: include commit information in /v response (#1705)

This commit is contained in:
Evgeny Poberezkin
2023-01-07 16:38:35 +00:00
committed by GitHub
parent 113c67ec95
commit 3d4e4e2ef9
5 changed files with 40 additions and 3 deletions

View File

@@ -27,6 +27,7 @@ dependencies:
- email-validate == 2.3.*
- exceptions == 0.10.*
- filepath == 1.4.*
- githash == 0.1.*
- http-types == 0.12.*
- mtl == 2.2.*
- network >= 3.1.2.7 && < 3.2

View File

@@ -108,6 +108,7 @@ library
, email-validate ==2.3.*
, exceptions ==0.10.*
, filepath ==1.4.*
, githash ==0.1.*
, http-types ==0.12.*
, mtl ==2.2.*
, network >=3.1.2.7 && <3.2
@@ -151,6 +152,7 @@ executable simplex-bot
, email-validate ==2.3.*
, exceptions ==0.10.*
, filepath ==1.4.*
, githash ==0.1.*
, http-types ==0.12.*
, mtl ==2.2.*
, network >=3.1.2.7 && <3.2
@@ -195,6 +197,7 @@ executable simplex-bot-advanced
, email-validate ==2.3.*
, exceptions ==0.10.*
, filepath ==1.4.*
, githash ==0.1.*
, http-types ==0.12.*
, mtl ==2.2.*
, network >=3.1.2.7 && <3.2
@@ -240,6 +243,7 @@ executable simplex-chat
, email-validate ==2.3.*
, exceptions ==0.10.*
, filepath ==1.4.*
, githash ==0.1.*
, http-types ==0.12.*
, mtl ==2.2.*
, network ==3.1.*
@@ -293,6 +297,7 @@ test-suite simplex-chat-test
, email-validate ==2.3.*
, exceptions ==0.10.*
, filepath ==1.4.*
, githash ==0.1.*
, hspec ==2.7.*
, http-types ==0.12.*
, mtl ==2.2.*

View File

@@ -1207,7 +1207,7 @@ processChatCommand = \case
updateGroupProfileByName gName $ \p ->
p {groupPreferences = Just . setGroupPreference' SGFTimedMessages pref $ groupPreferences p}
QuitChat -> liftIO exitSuccess
ShowVersion -> pure $ CRVersionInfo versionNumber
ShowVersion -> pure $ CRVersionInfo versionNumber coreVersionInfo
DebugLocks -> do
chatLockName <- atomically . tryReadTMVar =<< asks chatLock
agentLocks <- withAgent debugAgentLocks

View File

@@ -8,6 +8,7 @@
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Simplex.Chat.Controller where
@@ -33,6 +34,7 @@ import Data.Time (ZonedTime)
import Data.Time.Clock (UTCTime)
import Data.Version (showVersion)
import GHC.Generics (Generic)
import GitHash
import Numeric.Natural
import qualified Paths_simplex_chat as SC
import Simplex.Chat.Call
@@ -61,6 +63,19 @@ import UnliftIO.STM
versionNumber :: String
versionNumber = showVersion SC.version
coreVersionInfo :: CoreVersionInfo
coreVersionInfo =
CoreVersionInfo
{ commitHash = giHash gi,
commitDate = giCommitDate gi,
commitMessage = giCommitMessage gi,
branch = giBranch gi,
tag = giTag gi,
dirty = giDirty gi
}
where
gi = $$tGitInfoCwd
versionStr :: String
versionStr = "SimpleX Chat v" <> versionNumber
@@ -334,7 +349,7 @@ data ChatResponse
| CRFileTransferStatus (FileTransfer, [Integer]) -- TODO refactor this type to FileTransferStatus
| CRUserProfile {profile :: Profile}
| CRUserProfileNoChange
| CRVersionInfo {version :: String}
| CRVersionInfo {version :: String, coreVersion :: CoreVersionInfo}
| CRInvitation {connReqInvitation :: ConnReqInvitation}
| CRSentConfirmation
| CRSentInvitation {customUserProfile :: Maybe Profile}
@@ -543,6 +558,18 @@ tmeToPref currentTTL tme = uncurry TimedMessagesPreference $ case tme of
TMEEnableKeepTTL -> (FAYes, currentTTL)
TMEDisableKeepTTL -> (FANo, currentTTL)
data CoreVersionInfo = CoreVersionInfo
{ commitHash :: String,
commitDate :: String,
commitMessage :: String,
branch :: String,
tag :: String,
dirty :: Bool
}
deriving (Show, Generic)
instance ToJSON CoreVersionInfo where toEncoding = J.genericToEncoding J.defaultOptions
data ChatError
= ChatError {errorType :: ChatErrorType}
| ChatErrorAgent {agentError :: AgentErrorType, connectionEntity_ :: Maybe ConnectionEntity}

View File

@@ -111,7 +111,7 @@ responseToView user_ testView liveItems ts = \case
CRFileTransferStatus ftStatus -> viewFileTransferStatus ftStatus
CRUserProfile p -> viewUserProfile p
CRUserProfileNoChange -> ["user profile did not change"]
CRVersionInfo _ -> [plain versionStr, plain updateStr]
CRVersionInfo _ info -> [plain versionStr, viewCoreVersionInfo info, plain updateStr]
CRChatCmdError e -> viewChatError e
CRInvitation cReq -> viewConnReqInvitation cReq
CRSentConfirmation -> ["confirmation sent!"]
@@ -1127,6 +1127,10 @@ instance ToJSON WCallCommand where
toEncoding = J.genericToEncoding . taggedObjectJSON $ dropPrefix "WCCall"
toJSON = J.genericToJSON . taggedObjectJSON $ dropPrefix "WCCall"
viewCoreVersionInfo :: CoreVersionInfo -> StyledString
viewCoreVersionInfo CoreVersionInfo {commitHash, commitMessage, commitDate} =
plain $ "commit " <> commitHash <> ": " <> commitMessage <> " (" <> commitDate <> ")"
viewChatError :: ChatError -> [StyledString]
viewChatError = \case
ChatError err -> case err of