/
Prelude.hs
129 lines (101 loc) · 2.43 KB
/
Prelude.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{-# LANGUAGE CPP #-}
-- | A base set of functions for the shell.
module Hell.Prelude where
import Prelude
import Control.Monad
import Data.List
import System.Directory
import System.Exit
import System.IO
#ifdef USE_OLD_TIME
import System.Time
#else
import Data.Time.Clock
#endif
import System.Process
-- | setCurrentDirectory
cd :: FilePath -> IO ()
cd = setCurrentDirectory
-- | getCurrentDirectory
pwd :: IO FilePath
pwd = getCurrentDirectory
-- | getHomeDirectory
home :: IO FilePath
home = getHomeDirectory
-- | getTemporaryDirectory
tmp :: IO FilePath
tmp = getTemporaryDirectory
-- | removeFile
rm :: FilePath -> IO ()
rm = removeFile
-- | renameFile
mv :: FilePath -> FilePath -> IO ()
mv = renameFile
-- | renameDirectory
mvdir :: FilePath -> FilePath -> IO ()
mvdir = renameDirectory
-- | copyFile
cp :: FilePath -> FilePath -> IO ()
cp = copyFile
-- | findExecutable
whereis :: String -> IO (Maybe FilePath)
whereis = findExecutable
-- | getPermissions
perms :: FilePath -> IO Permissions
perms = getPermissions
-- | getModificationTime
#ifdef USE_OLD_TIME
modified :: FilePath -> IO ClockTime
#else
modified :: FilePath -> IO UTCTime
#endif
modified = getModificationTime
-- | removeDirectory
rmdir :: FilePath -> IO ()
rmdir = removeDirectory
-- | removeDirectoryRecursive
rmdirR :: FilePath -> IO ()
rmdirR = removeDirectoryRecursive
-- | createDirectory
mkdir :: FilePath -> IO ()
mkdir = createDirectory
-- | createDirectoryIfMissing
mkdirF :: Bool -> FilePath -> IO ()
mkdirF = createDirectoryIfMissing
-- | dir' >=> mapM_ putStrLn
dir :: FilePath -> IO ()
dir = dir' >=> mapM_ putStrLn
-- | fmap (sort . filter (not . isPrefixOf \".\")) (getDirectoryContents d)
dir' :: FilePath -> IO [[Char]]
dir' d = fmap (sort . filter (not . isPrefixOf ".")) (getDirectoryContents d)
-- | ls' >>= mapM_ putStrLn
ls :: IO ()
ls = ls' >>= mapM_ putStrLn
-- | dir' \".\"
ls' :: IO [[Char]]
ls' = dir' "."
-- | fmap sort (getDirectoryContents \".\")
lsa :: IO [FilePath]
lsa = fmap sort (getDirectoryContents ".")
-- | readFile
cat :: FilePath -> IO String
cat = readFile
-- | writeFile
write :: FilePath -> String -> IO ()
write = writeFile
-- | appendFile
append :: FilePath -> String -> IO ()
append = appendFile
-- | hFileSize
size :: FilePath -> IO Integer
size fp = do
h <- openFile fp ReadMode
s <- hFileSize h
hClose h
return s
-- | putStrLn
echo :: String -> IO ()
echo = putStrLn
-- | system cmd
run :: String -> IO ExitCode
run cmd = system cmd