zig env: back to json output

changed my mind I liked it better before. this reverts
053119083c2c93cb1fc4129bc647c03301f4010d.
This commit is contained in:
Andrew Kelley 2023-10-18 15:50:00 -07:00
parent ec21da0d51
commit 63f9af87d3

View File

@ -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();
}