module Checks where
-import Program
-import Data.List (isSuffixOf)
-import Output
-import System.FilePath
-import qualified Data.Text as T
-import qualified Data.Text.Lazy as TL
-import Data.Text.ANSI
-import System.Directory.Extra
-import System.Environment (getEnv)
-import Text.Replace
+import Data.List (isSuffixOf)
+import qualified Data.Text as T
+import Data.Text.ANSI
+import qualified Data.Text.Lazy as TL
+import Output
+import Program
+import System.Directory.Extra
+import System.Environment (getEnv)
+import System.FilePath
+import Text.Replace
data Result = Exist | MustExist | NoExist
deriving Show
let replacements = [ Replace "$HOME" (T.pack home) ]
let result = replaceWithList replacements (TL.pack path)
return (TL.unpack result)
-
+
checkFile :: T.Text -> Bool -> File -> IO Result
checkFile programName verbose file = do
logFile programName file True
case (supportLevel file) of
Unsupported -> return MustExist
- _ -> return Exist
+ _ -> return Exist
checkProgram :: Bool -> Program -> IO [Result]
checkProgram verbose program = sequence (map (checkFile (name program) verbose) (files program))
module Output where
-import qualified Data.Text as T
-import Data.Char (isSpace)
-import Data.Text.ANSI
+import Data.Char (isSpace)
+import qualified Data.Text as T
+import Data.Text.ANSI
import Data.UUID
import Data.UUID.V4
+import Program
import System.Exit
import System.Process
-import Program
getFilename :: IO String
getFilename = do
SUCS -> putStrLn (line green name filename)
HELP -> do
md <- case (all isSpace help) of
- True -> renderMarkdown "_No help available._"
+ True -> renderMarkdown "_No help available._"
False -> renderMarkdown help
putStr md
module PreviewProgram where
+import qualified Data.Text as T
+import Data.Text.ANSI
+import Output
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
x <- readProgram filename
case x of
Just program -> previewProgram program
- Nothing -> putStrLn (T.unpack (red (T.pack "Error.")))
+ Nothing -> putStrLn (T.unpack (red (T.pack "Error.")))
return ()
import qualified AddProgram as PA
-import qualified Checks as C
+import qualified Checks as C
import Data.Semigroup ((<>))
import qualified EditProgram as PE
-import qualified PreviewProgram as PP
import Options.Applicative
+import qualified PreviewProgram as PP
data Args = RunChecks
| AddProgram
main = do
args <- execParser args
case args of
- RunChecks -> C.checkDir "./programs"
- AddProgram -> PA.saveProgram
- EditProgram filename -> PE.editProgram filename
+ RunChecks -> C.checkDir "./programs"
+ AddProgram -> PA.saveProgram
+ EditProgram filename -> PE.editProgram filename
PreviewProgram filename -> PP.previewProgramFile filename
- _ -> print args
+ _ -> print args