authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-06-24 15:50:51 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-06-24 15:50:51 -07:00
log95890f305e769b729416af265c39f95ed2b4db1c
tree151a23f0345d06cde22b4df1a2cf77f8da57dce6
parentb46cdbf797afba04946f05292809832e73834a6c

cmd/zpm: add helper json get function


1 files changed, 12 insertions(+), 4 deletions(-)

src/cmd/zpm.zig+12-4
......@@ -70,7 +70,7 @@ pub fn server_fetchArray(url: string) ![]const Package {
7070 errdefer list.deinit();
7171
7272 for (val.root.array.items) |item| {
73 if (item.object.get("root_file").? == .null) continue;
73 if (get(item, "root_file") == null) continue;
7474 try list.append(Package{
7575 .name = item.object.get("name").?.string,
7676 .author = item.object.get("author").?.string,
......@@ -100,8 +100,16 @@ fn valueLinks(vals: std.json.Value) ![]?string {
100100 var list = std.ArrayList(?string).init(gpa);
101101 errdefer list.deinit();
102102
103 if (vals.object.get("github")) |x| try list.append(x.string);
104 if (vals.object.get("aquila")) |x| try list.append(x.string);
105 if (vals.object.get("astrolabe")) |x| try list.append(x.string);
103 if (get(vals, "github")) |x| try list.append(x.string);
104 if (get(vals, "aquila")) |x| try list.append(x.string);
105 if (get(vals, "astrolabe")) |x| try list.append(x.string);
106106 return list.toOwnedSlice();
107107}
108
109fn get(obj: std.json, key: string) ?std.json.Value {
110 if (obj != .object) return;
111 const v = obj.object.get(key);
112 if (v == null) return null;
113 if (v == .null) return null;
114 return v;
115}