packages feed

hs-opentelemetry-sdk-0.1.0.0: src/platform/unix/OpenTelemetry/Platform.hs

module OpenTelemetry.Platform where

import Control.Exception (throwIO, try)
import qualified Data.Text as T
import System.IO.Error (isDoesNotExistError)
import System.Posix.User (getEffectiveUserName)


tryGetUser :: IO (Maybe T.Text)
tryGetUser = do
  eResult <- try getEffectiveUserName
  case eResult of
    Left err ->
      if isDoesNotExistError err
        then pure Nothing
        else throwIO err
    Right ok -> pure $ Just $ T.pack ok