summaryrefslogtreecommitdiff
path: root/Omni/Deploy/Manifest.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Deploy/Manifest.hs')
-rw-r--r--Omni/Deploy/Manifest.hs15
1 files changed, 10 insertions, 5 deletions
diff --git a/Omni/Deploy/Manifest.hs b/Omni/Deploy/Manifest.hs
index e0d0b78..532ec4c 100644
--- a/Omni/Deploy/Manifest.hs
+++ b/Omni/Deploy/Manifest.hs
@@ -85,7 +85,8 @@ instance Aeson.ToJSON Artifact where
data Exec = Exec
{ execCommand :: Maybe Text,
execUser :: Text,
- execGroup :: Text
+ execGroup :: Text,
+ execWorkingDirectory :: Maybe Text
}
deriving (Show, Eq, Generic)
@@ -100,17 +101,19 @@ instance Aeson.FromJSON Exec where
<*> o
.:? "group"
.!= "root"
+ <*> (o .:? "workingDirectory")
instance Aeson.ToJSON Exec where
toJSON Exec {..} =
Aeson.object
[ "command" .= execCommand,
"user" .= execUser,
- "group" .= execGroup
+ "group" .= execGroup,
+ "workingDirectory" .= execWorkingDirectory
]
defaultExec :: Exec
-defaultExec = Exec Nothing "root" "root"
+defaultExec = Exec Nothing "root" "root" Nothing
data Http = Http
{ httpDomain :: Text,
@@ -507,8 +510,10 @@ move args
m <- maybe createEmptyManifest pure manifest
case findService (serviceName svc) m of
Just _ -> do
- Log.fail ["manifest", "service already exists:", serviceName svc]
- Exit.exitWith (Exit.ExitFailure 1)
+ -- Replace existing service
+ let updated = m {manifestServices = map (\s -> if serviceName s == serviceName svc then svc else s) (manifestServices m)}
+ saveManifestToS3 updated
+ Log.good ["manifest", "updated service", serviceName svc]
Nothing -> do
let newManifest = m {manifestServices = manifestServices m ++ [svc]}
saveManifestToS3 newManifest