3 import qualified Data.Text as T
11 getFilename :: IO String
13 id <- toString <$> Data.UUID.V4.nextRandom
14 return ("/tmp/xdg-ninja." ++ id ++ ".txt")
16 renderMarkdown :: String -> IO String
17 renderMarkdown content = do
18 filenameInput <- getFilename
19 filenameOutput <- getFilename
20 editor <- appendFile (filenameInput) content
21 (_, _, _, p) <- createProcess (shell ("glow -s dark " ++ filenameInput ++ " > " ++ filenameOutput))
24 ExitSuccess -> readFile filenameOutput
25 ExitFailure a -> return ""
27 line :: (T.Text -> T.Text) -> String -> String -> String
28 line color name filename = T.unpack ((T.pack "[") <> bold (color (T.pack name)) <> (T.pack "]: ") <> bold (italic (T.pack filename)))
30 data Mode = ERR | WARN | INFO | SUCS | HELP
32 log :: Mode -> String -> String -> String -> IO ()
33 log mode name filename help = case mode of
35 putStrLn (line red name filename)
36 Output.log HELP name filename help
38 putStrLn (line yellow name filename)
39 Output.log HELP name filename help
41 putStrLn (line cyan name filename)
42 Output.log HELP name filename help
43 SUCS -> putStrLn (line green name filename)
45 md <- renderMarkdown help
48 logFile :: T.Text -> File -> Bool -> IO ()
49 logFile programName file onFilesystem = case onFilesystem of
50 False -> Output.log SUCS (T.unpack programName) (path file) (help file)
51 True -> case (supportLevel file) of
52 Unsupported -> Output.log WARN (T.unpack programName) (path file) (help file)
53 _ -> Output.log ERR (T.unpack programName) (path file) (help file)