]> glassweightruler.freedombox.rocks Git - xdg-ninja.git/commitdiff
Add preview program command
authorb3nj4m1n <b3nj4m1n@gmx.net>
Sun, 22 May 2022 12:34:17 +0000 (14:34 +0200)
committerb3nj4m1n <b3nj4m1n@gmx.net>
Sun, 22 May 2022 12:34:17 +0000 (14:34 +0200)
lib/EditProgram.hs
lib/Output.hs
lib/PreviewProgram.hs [new file with mode: 0644]
lib/Program.hs
src/xdgnj.hs
xdgnj.cabal

index a1a6728664b951936f82dc5a66f35057584cdfde..353344c1fc1e2439f520825d3156c7110e1378c7 100644 (file)
@@ -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
index c9f963d10625390445ef385fe6f0546350f20937..d36db9ddc55797c192e899174aca16d7aa790041 100644 (file)
@@ -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 (file)
index 0000000..cd9ea6b
--- /dev/null
@@ -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 ()
index 1f1ad958cf4fc5b09693368f80e2455c035bc617..9674147167e0a908edef776afbd24e421b835e05 100644 (file)
@@ -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)
index 3c4cea018d27948337645544f8bb0a9b3a6a042a..a379bf4f29b5ce92ff1dc9488cd88f45b0b26854 100644 (file)
@@ -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
index dc11a1a53911135830a6f4e330c89c88c6d77866..d15083d81dbd2d8e4a6ea88dfbfe6f4549778fad 100644 (file)
@@ -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