diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2017-06-12 02:12:51 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2017-06-12 02:12:51 +0300 |
commit | 5c3b840df3897c216dafeb5f63a39ee12f63a804 (patch) | |
tree | 14f1b317f39c895a14fb4660e137d24a06f77526 | |
parent | WindowsEnv: {VarName,VarValue} -> {Name,Value} (diff) | |
download | windows-env-5c3b840df3897c216dafeb5f63a39ee12f63a804.tar.gz windows-env-5c3b840df3897c216dafeb5f63a39ee12f63a804.zip |
setenv: detect expandable values
-rw-r--r-- | app/SetEnv.hs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/app/SetEnv.hs b/app/SetEnv.hs index d590f64..258bc2e 100644 --- a/app/SetEnv.hs +++ b/app/SetEnv.hs @@ -55,7 +55,7 @@ setEnv :: Options -> IO () setEnv options = runExceptT doSetEnv >>= either ioError return where varName = optName options - varValue = WindowsEnv.Value False $ optValue options + varValue = optValue options forAllUsers = optGlobal options profile @@ -63,10 +63,16 @@ setEnv options = runExceptT doSetEnv >>= either ioError return | otherwise = WindowsEnv.CurrentUser skipPrompt = optYes options - promptAnd - | skipPrompt = withoutPrompt - | otherwise = withPrompt $ newMessage profile varName varValue - engrave = WindowsEnv.engrave profile varName varValue + doSetEnv = do + expanded <- WindowsEnv.expand varValue + let expandable = expanded == varValue + let newValue = WindowsEnv.Value expandable varValue + promptAndEngrave newValue - doSetEnv = void $ promptAnd engrave + promptAndEngrave newValue = do + let promptAnd = if skipPrompt + then withoutPrompt + else withPrompt $ newMessage profile varName newValue + let engrave = WindowsEnv.engrave profile varName newValue + void $ promptAnd engrave |