diff options
Diffstat (limited to 'Omni/Deploy/Manifest.hs')
| -rw-r--r-- | Omni/Deploy/Manifest.hs | 15 |
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 |
