aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/WindowsEnv/Environment.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WindowsEnv/Environment.hs')
-rw-r--r--src/WindowsEnv/Environment.hs79
1 files changed, 0 insertions, 79 deletions
diff --git a/src/WindowsEnv/Environment.hs b/src/WindowsEnv/Environment.hs
deleted file mode 100644
index 8bfb449..0000000
--- a/src/WindowsEnv/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 WindowsEnv.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 WindowsEnv.Registry as Registry
-import WindowsEnv.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)