| ... | @@ -23,30 +23,38 @@ pub fn cmdEnv(arena: Allocator, args: []const []const u8, stdout: std.fs.File.Wr | ... | @@ -23,30 +23,38 @@ pub fn cmdEnv(arena: Allocator, args: []const []const u8, stdout: std.fs.File.Wr |
| 23 | var bw = std.io.bufferedWriter(stdout); | 23 | var bw = std.io.bufferedWriter(stdout); |
| 24 | const w = bw.writer(); | 24 | const w = bw.writer(); |
| 25 | | 25 | |
| 26 | try w.print( | 26 | var jws = std.json.writeStream(w, .{ .whitespace = .indent_1 }); |
| 27 | \\zig_exe={s} | | |
| 28 | \\lib_dir={s} | | |
| 29 | \\std_dir={s} | | |
| 30 | \\global_cache_dir={s} | | |
| 31 | \\version={s} | | |
| 32 | \\target={s} | | |
| 33 | \\ | | |
| 34 | , .{ | | |
| 35 | self_exe_path, | | |
| 36 | zig_lib_directory.path.?, | | |
| 37 | zig_std_dir, | | |
| 38 | global_cache_dir, | | |
| 39 | build_options.version, | | |
| 40 | triple, | | |
| 41 | }); | | |
| 42 | | 27 | |
| | 28 | try jws.beginObject(); |
| | 29 | |
| | 30 | try jws.objectField("zig_exe"); |
| | 31 | try jws.write(self_exe_path); |
| | 32 | |
| | 33 | try jws.objectField("lib_dir"); |
| | 34 | try jws.write(zig_lib_directory.path.?); |
| | 35 | |
| | 36 | try jws.objectField("std_dir"); |
| | 37 | try jws.write(zig_std_dir); |
| | 38 | |
| | 39 | try jws.objectField("global_cache_dir"); |
| | 40 | try jws.write(global_cache_dir); |
| | 41 | |
| | 42 | try jws.objectField("version"); |
| | 43 | try jws.write(build_options.version); |
| | 44 | |
| | 45 | try jws.objectField("target"); |
| | 46 | try jws.write(triple); |
| | 47 | |
| | 48 | try jws.objectField("env"); |
| | 49 | try jws.beginObject(); |
| 43 | inline for (@typeInfo(introspect.EnvVar).Enum.fields) |field| { | 50 | inline for (@typeInfo(introspect.EnvVar).Enum.fields) |field| { |
| 44 | if (try @field(introspect.EnvVar, field.name).get(arena)) |value| { | 51 | try jws.objectField(field.name); |
| 45 | try w.print("{s}={s}\n", .{ field.name, value }); | 52 | try jws.write(try @field(introspect.EnvVar, field.name).get(arena)); |
| 46 | } else { | | |
| 47 | try w.print("{s}\n", .{field.name}); | | |
| 48 | } | | |
| 49 | } | 53 | } |
| | 54 | try jws.endObject(); |
| | 55 | |
| | 56 | try jws.endObject(); |
| | 57 | try w.writeByte('\n'); |
| 50 | | 58 | |
| 51 | try bw.flush(); | 59 | try bw.flush(); |
| 52 | } | 60 | } |