diff --git a/engines/evidence-ledger/internal/app/app.go b/engines/evidence-ledger/internal/app/app.go index e0f43a9c..38b4fe3a 100644 --- a/engines/evidence-ledger/internal/app/app.go +++ b/engines/evidence-ledger/internal/app/app.go @@ -134,21 +134,12 @@ func openMigrated() (*sql.DB, Paths, error) { func cmdInit(args []string, out, errw io.Writer) int { _ = args paths := ResolvePaths() - if err := security.EnsurePrivateParent(paths.ConfigPath); err != nil { - return fatalf(errw, "init: %s", err) - } if err := security.EnsurePrivateDir(paths.DataDir); err != nil { return fatalf(errw, "init: %s", err) } if err := security.EnsurePrivateDir(paths.CacheDir); err != nil { return fatalf(errw, "init: %s", err) } - if _, err := os.Stat(paths.ConfigPath); errors.Is(err, os.ErrNotExist) { - body := fmt.Sprintf("db_path = %q\ncache_dir = %q\n", paths.DBPath, paths.CacheDir) - if err := security.WritePrivateFileAtomic(paths.ConfigPath, []byte(body)); err != nil { - return fatalf(errw, "init: %s", err) - } - } db, err := archive.Open(paths.DBPath) if err != nil { return fatalf(errw, "init: %s", err) diff --git a/engines/evidence-ledger/internal/app/app_test.go b/engines/evidence-ledger/internal/app/app_test.go index eda76d55..f26b7f14 100644 --- a/engines/evidence-ledger/internal/app/app_test.go +++ b/engines/evidence-ledger/internal/app/app_test.go @@ -28,9 +28,12 @@ func TestInitCreatesPrivateDirsAndDoctorJSON(t *testing.T) { t.Fatalf("init failed: code=%d err=%s", code, errb.String()) } paths := ResolvePaths() - assertPrivate(t, filepath.Dir(paths.ConfigPath)) + if _, err := os.Stat(paths.ConfigPath); !errors.Is(err, os.ErrNotExist) { + t.Fatalf("init created config.toml at %s: %v", paths.ConfigPath, err) + } assertPrivate(t, paths.DataDir) assertPrivate(t, paths.CacheDir) + assertPrivate(t, paths.DBPath) out.Reset() errb.Reset() @@ -46,6 +49,23 @@ func TestInitCreatesPrivateDirsAndDoctorJSON(t *testing.T) { } } +func TestInitLeavesExistingConfigUntouched(t *testing.T) { + withTempHome(t) + paths := ResolvePaths() + custom := "db_path = \"/custom/fork.db\"\ncache_dir = \"/custom/cache\"\n" + mustWrite(t, paths.ConfigPath, custom) + + runOK(t, "init") + + got, err := os.ReadFile(paths.ConfigPath) + if err != nil { + t.Fatalf("read config: %v", err) + } + if string(got) != custom { + t.Fatalf("init rewrote config.toml:\n got %q\nwant %q", got, custom) + } +} + func TestDoctorMCPJSON(t *testing.T) { withTempHome(t) runOK(t, "init")