-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenv.hs
34 lines (25 loc) · 793 Bytes
/
env.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module Main(main) where
import System.Environment (getArgs)
import System.Posix.Env
main = do
args <- getArgs
handle args
dump_environment :: IO ()
dump_environment = getEnvironmentPrim >>= (mapM_ putStrLn)
handle [] = dump_environment
handle (x:xs) | is_env_setting x = set_env x >> handle xs
handle (x:xs) | is_argument x = handle_arg x >> handle xs
handle xs = execute xs
is_env_setting = any (== '=')
count pred xs = length $ filter pred xs
set_env = putEnv
is_argument "-i" = True
is_argument "--ignore-environment" = True
is_argument "-u" = True
is_argument "--unset=NAME" = True
is_argument "--help" = True
is_argument "--version" = True
is_argument "-" = True
is_argument _ = False
handle_arg = error "handle_arg is stub."
execute xs = error "execute is stub."