authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-17 17:52:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-17 17:52:13-07:00
log18ac9987670b01cd254dc05031e1758dacbc7265
treef82881589c1795e4b23756ebadbc90beab995ee0
parent502d413621a8c2de3c6987e7d5a654392e2eab17

zig env: add global_cache_dir field


2 files changed, 19 insertions(+), 3 deletions(-)

src-self-hosted/introspect.zig+13-3
......@@ -73,7 +73,17 @@ pub fn resolveZigLibDir(allocator: *mem.Allocator) ![]u8 {
7373 };
7474}
7575
76/// Caller must free result
77pub fn resolveZigCacheDir(allocator: *mem.Allocator) ![]u8 {
78 return std.mem.dupe(allocator, u8, "zig-cache");
76/// Caller owns returned memory.
77pub fn resolveGlobalCacheDir(allocator: *mem.Allocator) ![]u8 {
78 const appname = "zig";
79
80 if (std.Target.current.os.tag != .windows) {
81 if (std.os.getenv("XDG_CACHE_HOME")) |cache_root| {
82 return fs.path.join(allocator, &[_][]const u8{ cache_root, appname });
83 } else if (std.os.getenv("HOME")) |home| {
84 return fs.path.join(allocator, &[_][]const u8{ home, ".cache", appname });
85 }
86 }
87
88 return fs.getAppDataDir(allocator, appname);
7989}
src-self-hosted/print_env.zig+6
......@@ -13,6 +13,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void
1313 const zig_std_dir = try std.fs.path.join(gpa, &[_][]const u8{ zig_lib_dir, "std" });
1414 defer gpa.free(zig_std_dir);
1515
16 const global_cache_dir = try introspect.resolveGlobalCacheDir(gpa);
17 defer gpa.free(global_cache_dir);
18
1619 var bos = std.io.bufferedOutStream(stdout);
1720 const bos_stream = bos.outStream();
1821
......@@ -25,6 +28,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void
2528 try jws.objectField("std_dir");
2629 try jws.emitString(zig_std_dir);
2730
31 try jws.objectField("global_cache_dir");
32 try jws.emitString(global_cache_dir);
33
2834 try jws.objectField("version");
2935 try jws.emitString(build_options.version);
3036