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 {...@@ -73,7 +73,17 @@ pub fn resolveZigLibDir(allocator: *mem.Allocator) ![]u8 {
73 };73 };
74}74}
7575
76/// Caller must free result76/// Caller owns returned memory.
77pub fn resolveZigCacheDir(allocator: *mem.Allocator) ![]u8 {77pub fn resolveGlobalCacheDir(allocator: *mem.Allocator) ![]u8 {
78 return std.mem.dupe(allocator, u8, "zig-cache");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);
79}89}
src-self-hosted/print_env.zig+6
...@@ -13,6 +13,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void...@@ -13,6 +13,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void
13 const zig_std_dir = try std.fs.path.join(gpa, &[_][]const u8{ zig_lib_dir, "std" });13 const zig_std_dir = try std.fs.path.join(gpa, &[_][]const u8{ zig_lib_dir, "std" });
14 defer gpa.free(zig_std_dir);14 defer gpa.free(zig_std_dir);
1515
16 const global_cache_dir = try introspect.resolveGlobalCacheDir(gpa);
17 defer gpa.free(global_cache_dir);
18
16 var bos = std.io.bufferedOutStream(stdout);19 var bos = std.io.bufferedOutStream(stdout);
17 const bos_stream = bos.outStream();20 const bos_stream = bos.outStream();
1821
...@@ -25,6 +28,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void...@@ -25,6 +28,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void
25 try jws.objectField("std_dir");28 try jws.objectField("std_dir");
26 try jws.emitString(zig_std_dir);29 try jws.emitString(zig_std_dir);
2730
31 try jws.objectField("global_cache_dir");
32 try jws.emitString(global_cache_dir);
33
28 try jws.objectField("version");34 try jws.objectField("version");
29 try jws.emitString(build_options.version);35 try jws.emitString(build_options.version);
3036