diff options
Diffstat (limited to 'src/Windows/Environment.hs')
-rw-r--r-- | src/Windows/Environment.hs | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/Windows/Environment.hs b/src/Windows/Environment.hs deleted file mode 100644 index b975be4..0000000 --- a/src/Windows/Environment.hs +++ /dev/null @@ -1,79 +0,0 @@ --- | --- Description : High-level environment variables management functions --- Copyright : (c) 2015 Egor Tensin <Egor.Tensin@gmail.com> --- License : MIT --- Maintainer : Egor.Tensin@gmail.com --- Stability : experimental --- Portability : Windows-only --- --- High-level functions for reading and writing Windows environment variables. - -module Windows.Environment - ( Profile(..) - , profileKeyPath - - , VarName - , VarValue - , query - , engrave - , engraveForce - , wipe - - , pathJoin - , pathSplit - ) where - -import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.Except (ExceptT(..)) -import Data.List (intercalate) -import Data.List.Split (splitOn) - -import qualified Windows.Registry as Registry -import Windows.Utils (notifyEnvironmentUpdate) - -data Profile = CurrentUser - | AllUsers - deriving (Eq, Show) - -profileKeyPath :: Profile -> Registry.KeyPath -profileKeyPath CurrentUser = Registry.KeyPath Registry.CurrentUser ["Environment"] -profileKeyPath AllUsers = Registry.KeyPath Registry.LocalMachine - [ "SYSTEM" - , "CurrentControlSet" - , "Control" - , "Session Manager" - , "Environment" - ] - -type VarName = String -type VarValue = String - -query :: Profile -> VarName -> ExceptT IOError IO VarValue -query profile name = Registry.getExpandedString (profileKeyPath profile) name - -engrave :: Profile -> VarName -> VarValue -> ExceptT IOError IO () -engrave profile name value = do - ret <- Registry.setStringPreserveType (profileKeyPath profile) name value - lift notifyEnvironmentUpdate - return ret - -engraveForce :: Profile -> VarName -> VarValue -> ExceptT IOError IO () -engraveForce profile name value = do - ret <- Registry.setString (profileKeyPath profile) name value - lift notifyEnvironmentUpdate - return ret - -wipe :: Profile -> VarName -> ExceptT IOError IO () -wipe profile name = do - ret <- Registry.deleteValue (profileKeyPath profile) name - lift notifyEnvironmentUpdate - return ret - -pathSep :: VarValue -pathSep = ";" - -pathSplit :: VarValue -> [VarValue] -pathSplit = filter (not . null) . splitOn pathSep - -pathJoin :: [VarValue] -> VarValue -pathJoin = intercalate pathSep . filter (not . null) |