|
|
@@ -759,18 +759,23 @@ export const layer = Layer.effect(
|
|
|
const patch = writableGlobal(config)
|
|
|
|
|
|
let next: Info
|
|
|
+ let changed: boolean
|
|
|
if (!file.endsWith(".jsonc")) {
|
|
|
const existing = ConfigParse.effectSchema(Info, ConfigParse.jsonc(before, file), file)
|
|
|
const merged = mergeDeep(writable(existing), patch)
|
|
|
- yield* fs.writeFileString(file, JSON.stringify(merged, null, 2)).pipe(Effect.orDie)
|
|
|
+ const serialized = JSON.stringify(merged, null, 2)
|
|
|
+ changed = serialized !== before
|
|
|
+ if (changed) yield* fs.writeFileString(file, serialized).pipe(Effect.orDie)
|
|
|
next = merged
|
|
|
} else {
|
|
|
const updated = patchJsonc(before, patch)
|
|
|
next = ConfigParse.effectSchema(Info, ConfigParse.jsonc(updated, file), file)
|
|
|
- yield* fs.writeFileString(file, updated).pipe(Effect.orDie)
|
|
|
+ changed = updated !== before
|
|
|
+ if (changed) yield* fs.writeFileString(file, updated).pipe(Effect.orDie)
|
|
|
}
|
|
|
|
|
|
- yield* invalidate()
|
|
|
+ // Only tear down running instances if the config actually changed.
|
|
|
+ if (changed) yield* invalidate()
|
|
|
return next
|
|
|
})
|
|
|
|