From 4b886a80c6cece38b28882450bc5db1ac47c0efd Mon Sep 17 00:00:00 2001 From: Spencer Brower Date: Fri, 1 May 2026 10:30:59 -0400 Subject: [PATCH] feat(config): Added data path. --- fixtures/default_config.json | 7 ++++--- src/Config.zig | 16 ++++++---------- src/Db.zig | 9 +++++++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/fixtures/default_config.json b/fixtures/default_config.json index 5e91902..e0b2e99 100644 --- a/fixtures/default_config.json +++ b/fixtures/default_config.json @@ -1,8 +1,9 @@ { + "db_path": "~/.envr/data.age", "keys": [ { - "private": "/home/spencer/.ssh/id_ed25519", - "public": "/home/spencer/.ssh/id_ed25519.pub" + "private": "~/.ssh/id_ed25519", + "public": "~/.ssh/id_ed25519.pub" } ], "scan": { @@ -17,4 +18,4 @@ "~" ] } -} +} \ No newline at end of file diff --git a/src/Config.zig b/src/Config.zig index a5e0586..a5efb64 100644 --- a/src/Config.zig +++ b/src/Config.zig @@ -1,5 +1,7 @@ const std = @import("std"); +db_path: []const u8 = "~/.envr/data.age", + /// Keys that are available for encryption keys: []const SSHKeyPair = &.{ .from_pub_path("~/.ssh/id_ed25519.pub"), @@ -120,11 +122,7 @@ test "loading the default config from disk matches expected values" { test "saving to a new file upserts the file" { const io = std.testing.io; - var cfg: @This() = .{ - .keys = &.{ - .from_pub_path("~/.ssh/id_ed25519.pub"), - }, - }; + var cfg: @This() = .{}; var tmp = std.testing.tmpDir(.{}); defer tmp.cleanup(); @@ -148,6 +146,7 @@ test "saving to a new file upserts the file" { const want = \\{ + \\ "db_path": "~/.envr/data.age", \\ "keys": [ \\ { \\ "private": "~/.ssh/id_ed25519", @@ -175,11 +174,7 @@ test "saving to a new file upserts the file" { test "saving to an existing file updates the file" { const io = std.testing.io; - var cfg: @This() = .{ - .keys = &.{ - .from_pub_path("~/.ssh/id_ed25519.pub"), - }, - }; + var cfg: @This() = .{}; var tmp = std.testing.tmpDir(.{}); defer tmp.cleanup(); @@ -201,6 +196,7 @@ test "saving to an existing file updates the file" { const want = \\{ + \\ "db_path": "~/.envr/data.age", \\ "keys": [ \\ { \\ "private": "~/.ssh/id_ed25519", diff --git a/src/Db.zig b/src/Db.zig index 9a390a7..56bbb86 100644 --- a/src/Db.zig +++ b/src/Db.zig @@ -23,8 +23,11 @@ pub fn open( gpa: std.mem.Allocator, opts: OpenOptions, ) !@This() { - // TODO: Read from config? - const db_path = try std.fs.path.join(gpa, &.{ opts.home, ".envr", "data.age" }); + // FIXME: cheating here + const db_path = try std.fs.path.join(gpa, &.{ + opts.home, + opts.config.db_path[2..], + }); defer gpa.free(db_path); var db = try new(opts.config); @@ -257,8 +260,10 @@ test "Closing a fresh database does not create a file" { const tmp = try std.fs.path.join(gpa, &.{ tmp_dir_path, "tmp" }); defer gpa.free(tmp); + // TODO: Pass testing keys var db: @This() = try .open(io, gpa, .{ .home = home, .tmp = tmp }); + // TODO: Get rid of direct access const db_path = try std.fs.path.join(gpa, &.{ home, ".envr", "data.age" }); defer gpa.free(db_path);