1 {-# LANGUAGE DeriveGeneric #-}
2 {-# LANGUAGE OverloadedStrings #-}
4 -- I do not know haskell, this code is probably shit
6 module EditProgram where
9 import Data.Aeson.Encode.Pretty
10 import Data.Aeson.Parser
11 import Data.Aeson.Types
12 import qualified Data.ByteString.Lazy as B
13 import Data.List.Extra
15 import qualified Data.Text as T
19 import GHC.Float (double2Float)
23 import System.Console.Haskeline
24 import System.Environment (getEnv)
28 import Text.Printf (printf)
30 getSupportLevel :: SupportLevel -> IO SupportLevel
31 getSupportLevel supportLevel = do
32 changed <- promptBool (blue "Has the support level changed? (y/n) ") (red "Please provide a valid answer.") "y"
34 then return supportLevel
36 movable <- promptBool (blue "Can the file be moved? (y/n) ") (red "Please provide a valid answer.") "y"
39 envVars <- promptBool (blue "Do you have to export environment variables? (y/n) ") (red "Please provide a valid answer.") "y"
43 alias <- promptBool (blue "Do you have to set an alias? (y/n) ") (red "Please provide a valid answer.") "y"
47 else return Unsupported
50 getHelp :: String -> IO String
51 getHelp currentHelp = getInputMarkdown currentHelp
53 editFile :: File -> IO File
55 printf "%s\n" (T.unpack (italic (cyan (T.pack (path f)))))
56 edit <- promptBool (green "Edit this file? (y/n) ") (red "Please provide a valid answer.") ""
60 supportLevel <- getSupportLevel (supportLevel f)
61 help <- getHelp (help f)
62 return File {path = path f, supportLevel = supportLevel, help = help}
64 editProgram :: String -> IO ()
65 editProgram filename = do
66 program <- readProgram filename
68 Nothing -> printf "%s %s\n" (T.unpack (bold (red "Error parsing file"))) (T.unpack (italic (red (T.pack filename))))
70 printf "%s %s\n" (T.unpack (cyan ("Editing"))) (T.unpack (italic (cyan (name p))))
71 files <- return (files p)
72 newFiles <- sequence (map editFile files)
73 do_save <- promptBool (green "Save? (y/n) ") (red "Please provide a valid answer.") ""
75 then save (T.pack filename) Program {name = (name p), files = newFiles}