diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-08-17 17:52:13 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-08-17 17:52:13 -0700 |
| commit | 18ac9987670b01cd254dc05031e1758dacbc7265 (patch) | |
| tree | f82881589c1795e4b23756ebadbc90beab995ee0 | |
| parent | 502d413621a8c2de3c6987e7d5a654392e2eab17 (diff) | |
| download | zig-18ac9987670b01cd254dc05031e1758dacbc7265.tar.gz zig-18ac9987670b01cd254dc05031e1758dacbc7265.zip | |
zig env: add global_cache_dir field
| -rw-r--r-- | src-self-hosted/introspect.zig | 16 | ||||
| -rw-r--r-- | src-self-hosted/print_env.zig | 6 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src-self-hosted/introspect.zig b/src-self-hosted/introspect.zig index 0d4c14a9ae..46405a2b70 100644 --- a/src-self-hosted/introspect.zig +++ b/src-self-hosted/introspect.zig @@ -73,7 +73,17 @@ pub fn resolveZigLibDir(allocator: *mem.Allocator) ![]u8 { }; } -/// Caller must free result -pub fn resolveZigCacheDir(allocator: *mem.Allocator) ![]u8 { - return std.mem.dupe(allocator, u8, "zig-cache"); +/// Caller owns returned memory. +pub fn resolveGlobalCacheDir(allocator: *mem.Allocator) ![]u8 { + const appname = "zig"; + + if (std.Target.current.os.tag != .windows) { + if (std.os.getenv("XDG_CACHE_HOME")) |cache_root| { + return fs.path.join(allocator, &[_][]const u8{ cache_root, appname }); + } else if (std.os.getenv("HOME")) |home| { + return fs.path.join(allocator, &[_][]const u8{ home, ".cache", appname }); + } + } + + return fs.getAppDataDir(allocator, appname); } diff --git a/src-self-hosted/print_env.zig b/src-self-hosted/print_env.zig index 444462789c..907e9e234d 100644 --- a/src-self-hosted/print_env.zig +++ b/src-self-hosted/print_env.zig @@ -13,6 +13,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void const zig_std_dir = try std.fs.path.join(gpa, &[_][]const u8{ zig_lib_dir, "std" }); defer gpa.free(zig_std_dir); + const global_cache_dir = try introspect.resolveGlobalCacheDir(gpa); + defer gpa.free(global_cache_dir); + var bos = std.io.bufferedOutStream(stdout); const bos_stream = bos.outStream(); @@ -25,6 +28,9 @@ pub fn cmdEnv(gpa: *Allocator, args: []const []const u8, stdout: anytype) !void try jws.objectField("std_dir"); try jws.emitString(zig_std_dir); + try jws.objectField("global_cache_dir"); + try jws.emitString(global_cache_dir); + try jws.objectField("version"); try jws.emitString(build_options.version); |
