feat(repo): initialise repository
This commit is contained in:
commit
c85e45aaee
11 changed files with 237 additions and 0 deletions
65
app/Main.hs
Normal file
65
app/Main.hs
Normal file
|
@ -0,0 +1,65 @@
|
|||
module Main where
|
||||
|
||||
import Data.List (isPrefixOf)
|
||||
import Data.Maybe (fromMaybe)
|
||||
import System.Environment (lookupEnv)
|
||||
import System.IO (readFile')
|
||||
|
||||
readUptime :: String -> Int
|
||||
readUptime "" = 0
|
||||
readUptime uptime
|
||||
| length (words uptime) > 1 = floor (read . head . words $ uptime :: Float)
|
||||
| otherwise = floor (read uptime :: Float)
|
||||
|
||||
getUptime :: Int -> String
|
||||
getUptime uptime
|
||||
| uptime < 60 = remS
|
||||
| uptime < 3600 = unwords [remM, remS]
|
||||
| otherwise = unwords [remH, remM, remS]
|
||||
where
|
||||
totalM = uptime `div` 60
|
||||
remS = show (uptime `mod` 60) ++ "s"
|
||||
remM = show (totalM `mod` 60) ++ "m"
|
||||
remH = show (totalM `div` 60) ++ "h"
|
||||
|
||||
getKVer :: String -> String
|
||||
getKVer "" = ""
|
||||
getKVer info
|
||||
| length (words info) < 3 = head (words info)
|
||||
| otherwise = (\(k : ks) -> k ++ " " ++ (head . tail) ks) . words $ info
|
||||
|
||||
findPrettyName :: [String] -> String
|
||||
findPrettyName (o : os)
|
||||
| "PRETTY_NAME" `isPrefixOf` o = (reverse . tail . init . takeWhile (/= '=') . reverse) o
|
||||
| otherwise = findPrettyName os
|
||||
|
||||
parseKBFromMeminfo :: String -> Int
|
||||
parseKBFromMeminfo "" = 0
|
||||
parseKBFromMeminfo line = read (head . tail . words $ line) :: Int
|
||||
|
||||
getMemory :: String -> String
|
||||
getMemory meminfo
|
||||
| length (lines meminfo) < 2 = "N/A"
|
||||
| otherwise = memAvail ++ "/" ++ memTotal
|
||||
where
|
||||
memTotal = show (parseKBFromMeminfo (head $ lines meminfo) `div` 1000) ++ "MB"
|
||||
memAvail = show (parseKBFromMeminfo (head . tail . tail $ lines meminfo) `div` 1000) ++ "MB"
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
uptime <- readFile' "/proc/uptime"
|
||||
version <- readFile' "/proc/version"
|
||||
osRelease <- readFile' "/etc/os-release"
|
||||
hostname <- readFile' "/proc/sys/kernel/hostname"
|
||||
meminfo <- readFile' "/proc/meminfo"
|
||||
username <- lookupEnv "USER"
|
||||
putStr
|
||||
( unlines
|
||||
[ "\x1b[1;35m █ \x1b[1;34m" ++ fromMaybe "username" username ++ "@" ++ init hostname
|
||||
, "\x1b[1;35m █ \x1b[1;34m"
|
||||
, "\x1b[1;35m █ \x1b[1;34m" ++ "up\t" ++ (getUptime . readUptime) uptime
|
||||
, "\x1b[1;35m ███ \x1b[1;34m" ++ "krl\t" ++ getKVer version
|
||||
, "\x1b[1;35m █ ██ \x1b[1;34m" ++ "os\t" ++ (findPrettyName . lines) osRelease
|
||||
, "\x1b[1;35m █ ██ \x1b[1;34m" ++ "mem\t" ++ getMemory meminfo
|
||||
]
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue