Commit 18ac998767
Changed files (2)
src-self-hosted
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);
}
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);