report version just like zig
This commit is contained in:
parent
34ce200b2e
commit
9dc694df24
32
build.zig
32
build.zig
@ -2,6 +2,8 @@ const std = @import("std");
|
||||
const builtin = @import("builtin");
|
||||
const shared = @import("src/shared.zig");
|
||||
|
||||
const zls_version = std.builtin.Version{ .major = 0, .minor = 10, .patch = 0 };
|
||||
|
||||
pub fn build(b: *std.build.Builder) !void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
|
||||
@ -44,12 +46,40 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
);
|
||||
|
||||
const version = v: {
|
||||
const version_string = b.fmt("{d}.{d}.{d}", .{ zls_version.major, zls_version.minor, zls_version.patch });
|
||||
|
||||
const git_describe_untrimmed = try b.exec(&[_][]const u8{
|
||||
"git", "-C", b.build_root, "describe", "--match", "*.*.*", "--tags",
|
||||
});
|
||||
|
||||
break :v std.mem.trim(u8, git_describe_untrimmed, " \n\r");
|
||||
const git_describe = std.mem.trim(u8, git_describe_untrimmed, " \n\r");
|
||||
|
||||
switch (std.mem.count(u8, git_describe, "-")) {
|
||||
0 => {
|
||||
// Tagged release version (e.g. 0.10.0).
|
||||
std.debug.assert(std.mem.eql(u8, git_describe, version_string)); // tagged release must match version string
|
||||
break :v version_string;
|
||||
},
|
||||
2 => {
|
||||
// Untagged development build (e.g. 0.10.0-dev.216+34ce200).
|
||||
var it = std.mem.split(u8, git_describe, "-");
|
||||
const tagged_ancestor = it.first();
|
||||
const commit_height = it.next().?;
|
||||
const commit_id = it.next().?;
|
||||
|
||||
const ancestor_ver = try std.builtin.Version.parse(tagged_ancestor);
|
||||
std.debug.assert(zls_version.order(ancestor_ver) == .gt); // zls version must be greater than its previous version
|
||||
std.debug.assert(std.mem.startsWith(u8, commit_id, "g")); // commit hash is prefixed with a 'g'
|
||||
|
||||
break :v b.fmt("{s}-dev.{s}+{s}", .{ version_string, commit_height, commit_id[1..] });
|
||||
},
|
||||
else => {
|
||||
std.debug.print("Unexpected 'git describe' output: '{s}'\n", .{git_describe});
|
||||
std.process.exit(1);
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
exe_options.addOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));
|
||||
|
||||
const KNOWN_FOLDERS_DEFAULT_PATH = "src/known-folders/known-folders.zig";
|
||||
|
Loading…
Reference in New Issue
Block a user