help <- getHelp (help f)
return File {path = path f, supportLevel = supportLevel, help = help}
-readProgram :: String -> IO ( Maybe Program )
-readProgram filename = do
- json_data <- B.readFile filename
- return (decode json_data)
-
editProgram :: String -> IO ()
editProgram filename = do
program <- readProgram filename
logFile programName file onFilesystem = case onFilesystem of
False -> Output.log SUCS (T.unpack programName) (path file) (help file)
True -> case (supportLevel file) of
- Unsupported -> Output.log WARN (T.unpack programName) (path file) (help file)
- _ -> Output.log ERR (T.unpack programName) (path file) (help file)
+ Unsupported -> Output.log ERR (T.unpack programName) (path file) (help file)
+ _ -> Output.log WARN (T.unpack programName) (path file) (help file)
--- /dev/null
+module PreviewProgram where
+
+import Program
+import Data.Text.ANSI
+import Output
+import qualified Data.Text as T
+
+previewFile :: T.Text -> File -> IO ()
+previewFile name file = logFile name file True
+
+previewProgram :: Program -> IO ()
+previewProgram program = do
+ _ <- sequence (map (previewFile (name program)) (files program))
+ return ()
+
+previewProgramFile :: String -> IO ()
+previewProgramFile filename = do
+ x <- readProgram filename
+ case x of
+ Just program -> previewProgram program
+ Nothing -> putStrLn (T.unpack (red (T.pack "Error.")))
+ return ()
save :: T.Text -> Program -> IO ()
save filename program = do
B.writeFile (T.unpack filename) (encodePretty program)
+
+readProgram :: String -> IO ( Maybe Program )
+readProgram filename = do
+ json_data <- B.readFile filename
+ return (decode json_data)
import qualified AddProgram as PA
import Data.Semigroup ((<>))
import qualified EditProgram as PE
+import qualified PreviewProgram as PP
import Options.Applicative
data Args = AddProgram
case args of
AddProgram -> PA.saveProgram
EditProgram filename -> PE.editProgram filename
+ PreviewProgram filename -> PP.previewProgramFile filename
_ -> print args
aeson-pretty ^>=0.8.9,
hs-source-dirs: lib
default-language: Haskell2010
- exposed-modules: AddProgram, Program, Prompts, EditProgram, Output
+ exposed-modules: AddProgram, Program, Prompts, EditProgram, Output, PreviewProgram
executable add-program
main-is: add-program.hs