hs-opentelemetry-sdk-0.1.0.0: src/OpenTelemetry/Resource/Process/Detector.hs
module OpenTelemetry.Resource.Process.Detector where
import qualified Data.Text as T
import Data.Version
import OpenTelemetry.Platform (tryGetUser)
import OpenTelemetry.Resource.Process
import System.Environment (
getArgs,
getExecutablePath,
getProgName,
)
import System.Info
import System.PosixCompat.Process (getProcessID)
{- | Create a 'Process' 'Resource' based off of the current process' knowledge
of itself.
@since 0.1.0.0
-}
detectProcess :: IO Process
detectProcess = do
Process
<$> (Just . fromIntegral <$> getProcessID)
<*> (Just . T.pack <$> getProgName)
<*> (Just . T.pack <$> getExecutablePath)
<*> pure Nothing
<*> pure Nothing
<*> (Just . map T.pack <$> getArgs)
<*> tryGetUser
{- | A 'ProcessRuntime' 'Resource' populated with the current process' knoweldge
of itself.
@since 0.0.1.0
-}
detectProcessRuntime :: ProcessRuntime
detectProcessRuntime =
ProcessRuntime
{ processRuntimeName = Just $ T.pack compilerName
, processRuntimeVersion = Just $ T.pack $ showVersion compilerVersion
, processRuntimeDescription = Nothing
}