Commit 63f9af87d3

Andrew Kelley <andrew@ziglang.org>
2023-10-19 00:50:00
zig env: back to json output
changed my mind I liked it better before. this reverts 053119083c2c93cb1fc4129bc647c03301f4010d.
1 parent ec21da0
Changed files (1)
src/print_env.zig
@@ -23,30 +23,38 @@ pub fn cmdEnv(arena: Allocator, args: []const []const u8, stdout: std.fs.File.Wr
     var bw = std.io.bufferedWriter(stdout);
     const w = bw.writer();
 
-    try w.print(
-        \\zig_exe={s}
-        \\lib_dir={s}
-        \\std_dir={s}
-        \\global_cache_dir={s}
-        \\version={s}
-        \\target={s}
-        \\
-    , .{
-        self_exe_path,
-        zig_lib_directory.path.?,
-        zig_std_dir,
-        global_cache_dir,
-        build_options.version,
-        triple,
-    });
+    var jws = std.json.writeStream(w, .{ .whitespace = .indent_1 });
 
+    try jws.beginObject();
+
+    try jws.objectField("zig_exe");
+    try jws.write(self_exe_path);
+
+    try jws.objectField("lib_dir");
+    try jws.write(zig_lib_directory.path.?);
+
+    try jws.objectField("std_dir");
+    try jws.write(zig_std_dir);
+
+    try jws.objectField("global_cache_dir");
+    try jws.write(global_cache_dir);
+
+    try jws.objectField("version");
+    try jws.write(build_options.version);
+
+    try jws.objectField("target");
+    try jws.write(triple);
+
+    try jws.objectField("env");
+    try jws.beginObject();
     inline for (@typeInfo(introspect.EnvVar).Enum.fields) |field| {
-        if (try @field(introspect.EnvVar, field.name).get(arena)) |value| {
-            try w.print("{s}={s}\n", .{ field.name, value });
-        } else {
-            try w.print("{s}\n", .{field.name});
-        }
+        try jws.objectField(field.name);
+        try jws.write(try @field(introspect.EnvVar, field.name).get(arena));
     }
+    try jws.endObject();
+
+    try jws.endObject();
+    try w.writeByte('\n');
 
     try bw.flush();
 }