diff options
| author | Ben Sima <ben@bensima.com> | 2025-12-25 21:51:43 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-12-25 21:51:43 -0500 |
| commit | abdace209323b65f6c5db1bf553ede1f60da00cc (patch) | |
| tree | fd253f652d0e77838e9196ee9890cef94547bcdb /Omni/Deploy/Manifest.hs | |
| parent | 5e9cb8c4983f6cdd05568029e9c233202d01c9bf (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.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 |
