feat(installer): record data directory in install manifest
Write the resolved DbPath parent into the manifest so UninstallRunner can honour customised data locations instead of always assuming ~/.todo-app. Older manifests fall back to the default path.
This commit is contained in:
@@ -8,7 +8,8 @@ public sealed record InstallManifest(
|
|||||||
string Version,
|
string Version,
|
||||||
string InstallDir,
|
string InstallDir,
|
||||||
string WorkerDir,
|
string WorkerDir,
|
||||||
DateTimeOffset InstalledAt);
|
DateTimeOffset InstalledAt,
|
||||||
|
string? DataDir = null);
|
||||||
|
|
||||||
public static class InstallManifestStore
|
public static class InstallManifestStore
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -67,10 +67,13 @@ public sealed class UninstallRunner
|
|||||||
failures.Add($"install dir ({_context.InstallDirectory}): {err}");
|
failures.Add($"install dir ({_context.InstallDirectory}): {err}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6) Delete ~/.todo-app (config + DB + logs) — only if user opted in.
|
// 6) Delete data dir (config + DB + logs) — only if user opted in.
|
||||||
|
// Prefer the manifest-recorded DataDir so a customised DbPath is honoured;
|
||||||
|
// fall back to the default ~/.todo-app for older manifests.
|
||||||
if (removeAppData)
|
if (removeAppData)
|
||||||
{
|
{
|
||||||
var appData = Paths.AppDataRoot();
|
var manifest = InstallManifestStore.TryRead(_context.InstallDirectory);
|
||||||
|
var appData = manifest?.DataDir ?? Paths.AppDataRoot();
|
||||||
if (Directory.Exists(appData))
|
if (Directory.Exists(appData))
|
||||||
{
|
{
|
||||||
progress.Report($"Deleting {appData}...");
|
progress.Report($"Deleting {appData}...");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
|
using ClaudeDo.Data;
|
||||||
using ClaudeDo.Installer.Core;
|
using ClaudeDo.Installer.Core;
|
||||||
|
|
||||||
namespace ClaudeDo.Installer.Steps;
|
namespace ClaudeDo.Installer.Steps;
|
||||||
@@ -14,11 +15,14 @@ public sealed class WriteInstallManifestStep : IInstallStep
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var dataDir = Path.GetDirectoryName(Paths.Expand(ctx.DbPath));
|
||||||
|
|
||||||
var manifest = new InstallManifest(
|
var manifest = new InstallManifest(
|
||||||
Version: ctx.InstalledVersion,
|
Version: ctx.InstalledVersion,
|
||||||
InstallDir: ctx.InstallDirectory,
|
InstallDir: ctx.InstallDirectory,
|
||||||
WorkerDir: Path.Combine(ctx.InstallDirectory, "worker"),
|
WorkerDir: Path.Combine(ctx.InstallDirectory, "worker"),
|
||||||
InstalledAt: DateTimeOffset.UtcNow);
|
InstalledAt: DateTimeOffset.UtcNow,
|
||||||
|
DataDir: dataDir);
|
||||||
|
|
||||||
InstallManifestStore.Write(ctx.InstallDirectory, manifest);
|
InstallManifestStore.Write(ctx.InstallDirectory, manifest);
|
||||||
progress.Report($"Wrote {InstallManifestStore.ManifestPath(ctx.InstallDirectory)}");
|
progress.Report($"Wrote {InstallManifestStore.ManifestPath(ctx.InstallDirectory)}");
|
||||||
|
|||||||
Reference in New Issue
Block a user