From fd05faf51a2f6681ba0914952b883473047cebfa Mon Sep 17 00:00:00 2001 From: Lee Cannon Date: Tue, 2 May 2023 15:54:13 -0700 Subject: [PATCH] print zls version and path during startup (#1165) * print zls version during startup * print zls executable path during startup --- src/main.zig | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main.zig b/src/main.zig index 3784ab3..4f26f6a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -199,6 +199,8 @@ const ParseArgsResult = struct { replay_enabled: bool, replay_session_path: ?[]const u8, message_tracing_enabled: bool, + + zls_exe_path: []const u8, }; fn parseArgs(allocator: std.mem.Allocator) !ParseArgsResult { @@ -208,6 +210,7 @@ fn parseArgs(allocator: std.mem.Allocator) !ParseArgsResult { .replay_enabled = false, .replay_session_path = null, .message_tracing_enabled = false, + .zls_exe_path = undefined, }; const ArgId = enum { @@ -256,7 +259,10 @@ fn parseArgs(allocator: std.mem.Allocator) !ParseArgsResult { var args_it = try std.process.ArgIterator.initWithAllocator(allocator); defer args_it.deinit(); - if (!args_it.skip()) @panic("Could not find self argument"); + + if (args_it.next()) |zls_path| { + result.zls_exe_path = try allocator.dupe(u8, zls_path); + } else unreachable; // Makes behavior of enabling debug more logging consistent regardless of argument order. var specified = std.enums.EnumArray(ArgId, bool).initFill(false); @@ -366,6 +372,7 @@ pub fn main() !void { const allocator: std.mem.Allocator = if (build_options.enable_failing_allocator) failing_allocator_state.allocator() else inner_allocator; const result = try parseArgs(allocator); + defer allocator.free(result.zls_exe_path); defer if (result.config_path) |path| allocator.free(path); defer if (result.replay_session_path) |path| allocator.free(path); switch (result.action) { @@ -373,6 +380,8 @@ pub fn main() !void { .exit => return, } + logger.info("Starting ZLS {s} @ '{s}'", .{ build_options.version, result.zls_exe_path }); + var config = try getConfig(allocator, result.config_path); defer std.json.parseFree(Config, config.config, .{ .allocator = allocator }); defer if (config.config_path) |path| allocator.free(path);