From: b3nj4m1n Date: Sun, 22 May 2022 12:34:17 +0000 (+0200) Subject: Add preview program command X-Git-Tag: v0.2.0.0~27 X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/xdg-ninja.git/commitdiff_plain/4f758de596c79f81bd3e8466478492102a6c9192?ds=sidebyside Add preview program command --- diff --git a/lib/EditProgram.hs b/lib/EditProgram.hs index a1a6728..353344c 100644 --- a/lib/EditProgram.hs +++ b/lib/EditProgram.hs @@ -61,11 +61,6 @@ editFile f = do 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 diff --git a/lib/Output.hs b/lib/Output.hs index c9f963d..d36db9d 100644 --- a/lib/Output.hs +++ b/lib/Output.hs @@ -49,5 +49,5 @@ logFile :: T.Text -> File -> Bool -> IO () 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) diff --git a/lib/PreviewProgram.hs b/lib/PreviewProgram.hs new file mode 100644 index 0000000..cd9ea6b --- /dev/null +++ b/lib/PreviewProgram.hs @@ -0,0 +1,22 @@ +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 () diff --git a/lib/Program.hs b/lib/Program.hs index 1f1ad95..9674147 100644 --- a/lib/Program.hs +++ b/lib/Program.hs @@ -55,3 +55,8 @@ makeFilename s = T.pack ( "./programs/" ++ T.unpack s ++ ".json" ) 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) diff --git a/src/xdgnj.hs b/src/xdgnj.hs index 3c4cea0..a379bf4 100644 --- a/src/xdgnj.hs +++ b/src/xdgnj.hs @@ -4,6 +4,7 @@ module Main where import qualified AddProgram as PA import Data.Semigroup ((<>)) import qualified EditProgram as PE +import qualified PreviewProgram as PP import Options.Applicative data Args = AddProgram @@ -41,4 +42,5 @@ main = do case args of AddProgram -> PA.saveProgram EditProgram filename -> PE.editProgram filename + PreviewProgram filename -> PP.previewProgramFile filename _ -> print args diff --git a/xdgnj.cabal b/xdgnj.cabal index dc11a1a..d15083d 100644 --- a/xdgnj.cabal +++ b/xdgnj.cabal @@ -35,7 +35,7 @@ library 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