authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-07-10 18:14:33 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-07-10 18:14:33 -07:00
logef20897b8196b4f3da3ee9bcc5ab731851d3aa2b
tree4c6a8cd3c3aedcf5845db6d653515879fa876669
parentac7be5d0c0110020cb8ae08b6afe06980b48db8d

add `version` command, closes #18


2 files changed, 40 insertions(+), 0 deletions(-)

src/cmd/version.zig created+39
...@@ -0,0 +1,39 @@
1const std = @import("std");
2const gpa = std.heap.c_allocator;
3const builtin = std.builtin;
4
5const u = @import("./../util/index.zig");
6
7//
8//
9
10pub fn execute(args: [][]u8) !void {
11 _ = args;
12
13 const root = @import("root");
14 const build_options = if (@hasDecl(root, "build_options")) root.build_options else struct {};
15 const version = if (@hasDecl(build_options, "version")) build_options.version else "unknown";
16
17 const stdout = std.io.getStdOut();
18 const w = stdout.writer();
19
20 try w.writeAll("zigmod");
21
22 try w.print(" {s}", .{version});
23 if (std.mem.eql(u8, version, "dev")) {
24 try w.print(
25 "-{s}",
26 .{
27 (try u.git_rev_HEAD(gpa, std.fs.cwd()))[0..7],
28 },
29 );
30 }
31
32 try w.print(" {s}", .{@tagName(builtin.os.tag)});
33
34 try w.print(" {s}", .{@tagName(builtin.cpu.arch)});
35
36 try w.print(" {s}", .{@tagName(builtin.abi)});
37
38 try w.writeAll("\n");
39}
src/lib.zig+1
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1pub const commands_to_bootstrap = struct {1pub const commands_to_bootstrap = struct {
2 pub const version = @import("./cmd/version.zig");
2 pub const fetch = @import("./cmd/fetch.zig");3 pub const fetch = @import("./cmd/fetch.zig");
3 pub const ci = @import("./cmd/ci.zig");4 pub const ci = @import("./cmd/ci.zig");
4};5};