summaryrefslogtreecommitdiff
path: root/Omni/Deploy/Manifest.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-12-25 21:51:43 -0500
committerBen Sima <ben@bensima.com>2025-12-25 21:51:43 -0500
commitabdace209323b65f6c5db1bf553ede1f60da00cc (patch)
treefd253f652d0e77838e9196ee9890cef94547bcdb /Omni/Deploy/Manifest.hs
parent5e9cb8c4983f6cdd05568029e9c233202d01c9bf (diff)
Omni/Deploy: add WorkingDirectory support and rename to deployer
- Add execWorkingDirectory field to Exec type in Manifest.hs - Generate WorkingDirectory= in systemd unit files - Allow add-service to update existing services - Rename biz-deployer to deployer throughout - Fix Caddy.hs and Systemd.hs tests for new Exec constructor This fixes subagent stalls caused by Coder running direnv from wrong directory. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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