packages feed

grakn-0.3.0: features/Env.hs

module Env where

import           Data.String.Utils (rstrip)
import           System.Exit       (ExitCode (ExitSuccess))
import           System.Process    (CreateProcess, createProcess, proc,
                                    readCreateProcess, waitForProcess)

env :: [String] -> CreateProcess
env = proc "features/grakn-spec/env.sh"

envStart :: IO Bool
envStart = envSuccess ["start", "1.0.0"]

envStop :: IO ()
envStop = do
  _ <- envSuccess ["stop"]
  return ()

envKeyspace :: IO String
envKeyspace = rstrip <$> readCreateProcess (env ["keyspace"]) ""

envInsert :: String -> IO ()
envInsert patterns = do
  _ <- envSuccess ["insert", patterns]
  return ()

envDefine :: String -> IO ()
envDefine patterns = do
  _ <- envSuccess ["define", patterns]
  return ()

envCheckType :: String -> IO Bool
envCheckType label = envSuccess ["check", "type", label]

envCheckInstance :: String -> String -> IO Bool
envCheckInstance res value = envSuccess ["check", "instance", res, value]

envSuccess :: [String] -> IO Bool
envSuccess args = do
    (_, _, _, p) <- createProcess $ env args
    code <- waitForProcess p
    return $ code == ExitSuccess