summaryrefslogtreecommitdiff
path: root/Omni
diff options
context:
space:
mode:
Diffstat (limited to 'Omni')
-rw-r--r--Omni/Agent.hs39
-rw-r--r--Omni/Agent/Core.hs19
2 files changed, 33 insertions, 25 deletions
diff --git a/Omni/Agent.hs b/Omni/Agent.hs
index 7a31d40..af785eb 100644
--- a/Omni/Agent.hs
+++ b/Omni/Agent.hs
@@ -1,6 +1,6 @@
+{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
-{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
-- : out agent
@@ -9,9 +9,9 @@ module Omni.Agent where
import Alpha
import qualified Data.Text as Text
-import qualified Omni.Cli as Cli
import qualified Omni.Agent.Core as Core
import qualified Omni.Agent.Worker as Worker
+import qualified Omni.Cli as Cli
import qualified Omni.Test as Test
main :: IO ()
@@ -20,14 +20,15 @@ main = Cli.main plan
plan :: Cli.Plan ()
plan =
Cli.Plan
- { Cli.help = help
- , Cli.move = move
- , Cli.test = test
- , Cli.tidy = \_ -> pure ()
+ { Cli.help = help,
+ Cli.move = move,
+ Cli.test = test,
+ Cli.tidy = \_ -> pure ()
}
help :: Cli.Docopt
-help = [Cli.docopt|
+help =
+ [Cli.docopt|
agent
Usage:
@@ -43,18 +44,20 @@ Options:
move :: Cli.Arguments -> IO ()
move args
| args `Cli.has` Cli.command "start" = do
- name <- Cli.getArg args (Cli.argument "name") |> \case
- Just n -> pure (Text.pack n)
- Nothing -> panic "Name required"
+ name <-
+ Cli.getArg args (Cli.argument "name") |> \case
+ Just n -> pure (Text.pack n)
+ Nothing -> panic "Name required"
let path = Cli.getArgWithDefault args "." (Cli.longOption "path")
-
- let worker = Core.Worker
- { Core.workerName = name
- , Core.workerPid = Nothing
- , Core.workerStatus = Core.Idle
- , Core.workerPath = path
- }
-
+
+ let worker =
+ Core.Worker
+ { Core.workerName = name,
+ Core.workerPid = Nothing,
+ Core.workerStatus = Core.Idle,
+ Core.workerPath = path
+ }
+
Worker.start worker
| otherwise = putStrLn (Cli.usage help)
diff --git a/Omni/Agent/Core.hs b/Omni/Agent/Core.hs
index 394b357..2d09e39 100644
--- a/Omni/Agent/Core.hs
+++ b/Omni/Agent/Core.hs
@@ -11,22 +11,27 @@ import Data.Aeson (FromJSON, ToJSON)
data WorkerStatus
= Idle
| Syncing
- | Working Text -- ^ Task ID
- | Submitting Text -- ^ Task ID
- | Error Text -- ^ Error message
+ | -- | Task ID
+ Working Text
+ | -- | Task ID
+ Submitting Text
+ | -- | Error message
+ Error Text
deriving (Show, Eq, Generic)
instance ToJSON WorkerStatus
+
instance FromJSON WorkerStatus
-- | Representation of a worker agent
data Worker = Worker
- { workerName :: Text
- , workerPid :: Maybe Int
- , workerStatus :: WorkerStatus
- , workerPath :: FilePath
+ { workerName :: Text,
+ workerPid :: Maybe Int,
+ workerStatus :: WorkerStatus,
+ workerPath :: FilePath
}
deriving (Show, Eq, Generic)
instance ToJSON Worker
+
instance FromJSON Worker