module HaskellWorks.Polysemy.System.Environment ( getArgs, getProgName, executablePath, getExecutablePath, getEnv, lookupEnv, setEnv, unsetEnv, getEnvironment, ) where import qualified Control.Exception as CE import HaskellWorks.Polysemy.Prelude import Polysemy import Polysemy.Error import qualified System.Environment as IO getArgs :: () => HasCallStack => Member (Embed IO) r => Sem r [String] getArgs :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r) => Sem r [String] getArgs = (HasCallStack => Sem r [String]) -> Sem r [String] forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r [String]) -> Sem r [String]) -> (HasCallStack => Sem r [String]) -> Sem r [String] forall a b. (a -> b) -> a -> b $ IO [String] -> Sem r [String] forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed IO [String] IO.getArgs getProgName :: () => HasCallStack => Member (Embed IO) r => Sem r String getProgName :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r) => Sem r String getProgName = (HasCallStack => Sem r String) -> Sem r String forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r String) -> Sem r String) -> (HasCallStack => Sem r String) -> Sem r String forall a b. (a -> b) -> a -> b $ IO String -> Sem r String forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed IO String IO.getProgName executablePath :: () => HasCallStack => Member (Embed IO) r => Maybe (Sem r (Maybe FilePath)) executablePath :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r) => Maybe (Sem r (Maybe String)) executablePath = (HasCallStack => Maybe (Sem r (Maybe String))) -> Maybe (Sem r (Maybe String)) forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Maybe (Sem r (Maybe String))) -> Maybe (Sem r (Maybe String))) -> (HasCallStack => Maybe (Sem r (Maybe String))) -> Maybe (Sem r (Maybe String)) forall a b. (a -> b) -> a -> b $ IO (Maybe String) -> Sem r (Maybe String) forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO (Maybe String) -> Sem r (Maybe String)) -> Maybe (IO (Maybe String)) -> Maybe (Sem r (Maybe String)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe (IO (Maybe String)) IO.executablePath getExecutablePath :: () => HasCallStack => Member (Embed IO) r => Sem r String getExecutablePath :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r) => Sem r String getExecutablePath = (HasCallStack => Sem r String) -> Sem r String forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r String) -> Sem r String) -> (HasCallStack => Sem r String) -> Sem r String forall a b. (a -> b) -> a -> b $ IO String -> Sem r String forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed IO String IO.getExecutablePath getEnv :: () => HasCallStack => Member (Embed IO) r => Member (Error IOException) r => String -> Sem r String getEnv :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r, Member (Error IOException) r) => String -> Sem r String getEnv String name = (HasCallStack => Sem r String) -> Sem r String forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r String) -> Sem r String) -> (HasCallStack => Sem r String) -> Sem r String forall a b. (a -> b) -> a -> b $ do Either IOException String r <- IO (Either IOException String) -> Sem r (Either IOException String) forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO (Either IOException String) -> Sem r (Either IOException String)) -> IO (Either IOException String) -> Sem r (Either IOException String) forall a b. (a -> b) -> a -> b $ forall e a. Exception e => IO a -> IO (Either e a) CE.try @IOException (IO String -> IO (Either IOException String)) -> IO String -> IO (Either IOException String) forall a b. (a -> b) -> a -> b $ String -> IO String IO.getEnv String name Either IOException String -> Sem r String forall e (r :: EffectRow) a. Member (Error e) r => Either e a -> Sem r a fromEither Either IOException String r lookupEnv :: () => HasCallStack => Member (Embed IO) r => String -> Sem r (Maybe String) lookupEnv :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r) => String -> Sem r (Maybe String) lookupEnv String name = (HasCallStack => Sem r (Maybe String)) -> Sem r (Maybe String) forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r (Maybe String)) -> Sem r (Maybe String)) -> (HasCallStack => Sem r (Maybe String)) -> Sem r (Maybe String) forall a b. (a -> b) -> a -> b $ IO (Maybe String) -> Sem r (Maybe String) forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO (Maybe String) -> Sem r (Maybe String)) -> IO (Maybe String) -> Sem r (Maybe String) forall a b. (a -> b) -> a -> b $ String -> IO (Maybe String) IO.lookupEnv String name setEnv :: () => HasCallStack => Member (Error IOException) r => Member (Embed IO) r => String -> String -> Sem r () setEnv :: forall (r :: EffectRow). (HasCallStack, Member (Error IOException) r, Member (Embed IO) r) => String -> String -> Sem r () setEnv String name String value = (HasCallStack => Sem r ()) -> Sem r () forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r ()) -> Sem r ()) -> (HasCallStack => Sem r ()) -> Sem r () forall a b. (a -> b) -> a -> b $ do Either IOException () r <- IO (Either IOException ()) -> Sem r (Either IOException ()) forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO (Either IOException ()) -> Sem r (Either IOException ())) -> IO (Either IOException ()) -> Sem r (Either IOException ()) forall a b. (a -> b) -> a -> b $ forall e a. Exception e => IO a -> IO (Either e a) CE.try @IOException (IO () -> IO (Either IOException ())) -> IO () -> IO (Either IOException ()) forall a b. (a -> b) -> a -> b $ String -> String -> IO () IO.setEnv String name String value Either IOException () -> Sem r () forall e (r :: EffectRow) a. Member (Error e) r => Either e a -> Sem r a fromEither Either IOException () r unsetEnv :: () => HasCallStack => Member (Error IOException) r => Member (Embed IO) r => String -> Sem r () unsetEnv :: forall (r :: EffectRow). (HasCallStack, Member (Error IOException) r, Member (Embed IO) r) => String -> Sem r () unsetEnv String name = (HasCallStack => Sem r ()) -> Sem r () forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r ()) -> Sem r ()) -> (HasCallStack => Sem r ()) -> Sem r () forall a b. (a -> b) -> a -> b $ do Either IOException () r <- IO (Either IOException ()) -> Sem r (Either IOException ()) forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (IO (Either IOException ()) -> Sem r (Either IOException ())) -> IO (Either IOException ()) -> Sem r (Either IOException ()) forall a b. (a -> b) -> a -> b $ forall e a. Exception e => IO a -> IO (Either e a) CE.try @IOException (IO () -> IO (Either IOException ())) -> IO () -> IO (Either IOException ()) forall a b. (a -> b) -> a -> b $ String -> IO () IO.unsetEnv String name Either IOException () -> Sem r () forall e (r :: EffectRow) a. Member (Error e) r => Either e a -> Sem r a fromEither Either IOException () r getEnvironment :: () => HasCallStack => Member (Embed IO) r => Sem r [(String, String)] getEnvironment :: forall (r :: EffectRow). (HasCallStack, Member (Embed IO) r) => Sem r [(String, String)] getEnvironment = (HasCallStack => Sem r [(String, String)]) -> Sem r [(String, String)] forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack ((HasCallStack => Sem r [(String, String)]) -> Sem r [(String, String)]) -> (HasCallStack => Sem r [(String, String)]) -> Sem r [(String, String)] forall a b. (a -> b) -> a -> b $ IO [(String, String)] -> Sem r [(String, String)] forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed IO [(String, String)] IO.getEnvironment